I/O 类操作,文件读写是IO操作的基础,因此文件读写是初学者的必经之路。这里要说明的是,File文件操作是指文件的本身,而不是文件中的内容。文件是指文本,图片,声音等数据文件。适用于读写速度要求不高,数据量不大的情况下。
一、定义:
1. 文件(文件路径+文件名),操作文件需要知道文件的路径,java和windows中的路径表达方式不同,windows中的分割符是“\”,而在java中\是转义符,因此java中的路径有两种表达方式1).c:\\java\\Demo 2).c:/java/demo 3).java文件路径是区分大小写的
2. 绝对路径和相对路径
绝对路径是文件的完整路径,包含文件路径c:\....以及文件全名ABC.java,通过该路径可以找到唯一的文件,但绝对路径受到运行系统的影响可能受到限制。
相对路径是指文件的部分路径,demo\abc.java,它是在程序当前目录的的目录。
3. 文件名就是 名称.类型,存储数据是设计了特定的文件格式,则可以自定义文件类型
二、File 类, Java.io包中的类,它可以表示一个文件夹或是文件。
2.1 File对象代表文件路径,文件夹也是一种路径。
2.2 File 类的常用方法。
Filef=new File(“c:\\a\b.txt”);
a创建文件,但不能创建文件所在的文件夹。也就是该方法的路径是一个切实存在的路径如果路径不存在系统会报错。 F.createNewFile()方法
b删除文件\文件夹Delete()方法
c判断文件夹非空 Exists()方法
d 获取绝对路径方法 getAbsolutePath()方法
e 获取文件夹或文件名称getName()方法
f 获取路径方法 getParent()方法
g 判断File对象是否是目录isDirectory()方法
h 判断File类是否是文件 isFile()方法
I 返回文件大小 length()方法
J 返回当前文件夹下所有项目名称 list()方法
K 返回当前文件夹下的所有文件和子文件对象 listFiles()方法
I 创建当前文件夹,但不穿件路径中的文件夹 mkdir()方法
M 创建当前文件夹,如果路径中的文件夹不存在同时创建 mkdirs()方法
N 修改文件名,不能出现重名。renameTo方法
O 该方法设置文件及文件夹为只读。setReadOnly()方法
通过例子实现简单的使用,具体使用时要灵活应用
public static void main(String[] args) {
// File基本用法总汇
// 使用file类前需要创建需要操作的file对象,就是讲实际存在的文件或文件名与操作对象联系起来。
File f1 = new File("D:\\workspace\\j2ee.java.text\\txt");
File f2 = new File("1.txt");
File f3 = new File("D:\\workspace\\j2ee.java.text\\txt\\file1.txt");
File f4 = new File("D:\\workspace\\j2ee.java.text\\txt", "file1.txt");
//新建一个f3绝对路径下的一个文件file1.txt
try {
boolean b = f3.createNewFile();
} catch (Exception e) {
e.printStackTrace();
}
//判断文件是否存在
System.out.println(f4.exists());
//获得文件的绝对路径
System.out.println(f3.getAbsolutePath());
//获得文件名
System.out.println(f3.getName());
//获得父路径
System.out.println(f3.getParent());
//判断是否是目录
System.out.println(f1.isDirectory());
//判断是否是文件
System.out.println(f3.isFile());
//获得文件长度
System.out.println(f3.length());
//获得当前文件夹下所有文件和文件夹名称,这里不能深入,仅仅返回文件夹下的子文件夹或文件
String[] s = f1.list();
for(int i = 0;i < s.length;i++){
System.out.println(s[i]);
}
//获得文件对象,文件对象就是这个文件所对应的完整路径,这个也是不能深入的。
File[] f5 = f1.listFiles();
for(int i = 0;i < f5.length;i++){
System.out.println(f5[i]);
}
//
//创建文件夹
File f6 = new File("D:\\workspace\\j2ee.java.text\\txt3\\txt4");
boolean b1 = f6.mkdir();//只能创建1层目录,成功返回ture失败返回false
System.out.println(b1);
b1 = f6.mkdirs();//能够同时创建剁成目录,同样是返回boolean类型
System.out.println(b1);
//修改文件名
File f7 = new File("D:\\workspace\\j2ee.java.text\\txt\\file3.txt");
boolean b2 = f3.renameTo(f7);
System.out.println(b2);
//修改删除非空文件夹或文件 ,这里是删除txt4文件夹
File f8= new File("D:\\workspace\\j2ee.java.text\\txt3\\txt4");
boolean b3=f8.delete();
System.out.println(b3);
File f = new File("D:\\workspace\\j2ee.java.text\\txt");
printAllFile(f);
}
/**
* 打印f路径下所有的文件和文件夹
* @param f 文件对象
*/
public static void printAllFile(File f){
//打印当前文件名
System.out.println(f.getName());
//是否是文件夹
if(f.isDirectory()){
//获得该文件夹下所有子文件和子文件夹
File[] f1 = f.listFiles();
//循环处理每个对象
int len = f1.length;
for(int i = 0;i < len;i++){
//递归调用,处理每个文件对象
printAllFile(f1[i]);
}
}
}
/**
* 删除对象f下的所有文件和文件夹
* @param f 文件路径
*/
public static void deleteAll(File f){
//文件
if(f.isFile()){
f.delete();
}else{ //文件夹
//获得当前文件夹下的所有子文件和子文件夹
File f1[] = f.listFiles();
//循环处理每个对象
int len = f1.length;
for(int i = 0;i < len;i++){
//递归调用,处理每个文件对象
deleteAll(f1[i]);
}
//删除当前文件夹
f.delete();
}
}
}