Java IO的File类的如何使用
1.java.io.File类
- java.io.File类:文件和目录路径名的抽象表示形式,且File类对象是与平台无关 。可以有构造器创建其对象,此对象对应着一个(.txt .properties .avi .doc)或者文件目录
- File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。
- File类的对象常常作为io流的具体类的构造器的形参
- File类的常见构造方法:
//方法一
public File(String pathname)
以pathname为路径创建File对象,可以是绝对路径或者相对路径,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。
//方法二
public File(String parent,String child)
以parent为父路径,child为子路径创建File对象。
- File的静态属性String separator存储了当前系统的路径分隔符。
① 在UNIX中,此字段为‘/’,在Windows中,为‘\’ - demo
public class TestFile {
@Test
public void test1() {
/*
* 路径:
* 绝对路径:包括盘符在内的完整的文件路径
* 相对路径:在当前文件目录下的文件的路径
*/
//两个字斜杠用法法
// File file = new File("d:/io/holleworld.txt");
File file = new File("d:\\io\\holleworld.txt");
//相对路径
File file2 = new File("holle.txt");
//目录
File file3 = new File("d:\\io\\io1");
}
}
2.File类的常用方法
1.访问文件名相关的File类中方法
- 方法
getName():获取文件名
getPath():获取文件路径
getAbsoluteFile():获取绝对的文件
getAbsolutePath():获取绝对路径
getParent():返回上一层的文件夹
renameTo(File newName):修改文件的名字为newName,注:重名的时候,会把文件名加路径都变为newName的
- demo
@Test
public void test2() {
File file = new File("d:\\io\\holleworld.txt");
//相对路径
File file2 = new File("holle.txt");
//目录
File file3 = new File("d:\\io\\io1");
System.out.println(file.getName());
System.out.println(file.getPath());
System.out.println(file.getAbsolutePath());
System.out.println(file.getAbsoluteFile());
System.out.println(file.getParentFile());
System.out.println("-----------------");
System.out.println(file3.getName());
System.out.println(file3.getPath());
System.out.println(file3.getAbsolutePath());
System.out.println(file3.getAbsoluteFile());
System.out.println(file3.getParentFile());
//renameTo(File newName):重命名
//file1.renameTo(file2):file1重命名为file2。要求:file1文件一定存在,file2文件一定不存在
//file1和file2需为同一种文件类型,如都为文件夹
boolean b = file.renameTo(file2);
}
- 输出结果为:
2.File类文件检测方法和获取常规文件信息
- 方法
检测:
exists():是否存在
canWrite():是否可写
canRead():是否可读
isFile():是否是文件
isDirectory():是否是文件夹
获取文件信息:
lastModified():获取最后修改时间
length():获取文件的大小
- demo
@Test
public void test3() {
File file = new File("D:\\io\\helloworld.txt");
File file1 = new File("d:\\io\\io1");
System.out.println(file.exists());
System.out.println(file.canWrite());
System.out.println(file.canRead());
System.out.println(file.isFile());
System.out.println(file.isDirectory());
System.out.println(new Date(file.lastModified()));
System.out.println(file.length());
System.out.println("----------");
System.out.println(file1.exists());
System.out.println(file1.canWrite());
System.out.println(file1.canRead());
System.out.println(file1.isFile());
System.out.println(file1.isDirectory());
System.out.println(new Date(file1.lastModified()));
System.out.println(file1.length());
}
- 输出
3.File类文件操作相关和目录操作相关的方法
- 方法(此处需注意mkDir()和mkDirs()的区别)
文件操作相关:
createNewFile():创建文件或目录
delete():删除文件和文件目录
目录操作相关:
mkDir():创建一个文件目录,只有在上层文件存在的情况下,才能返回true
mkDirs():创建一个文件目,若上层文件不存在,则一并创建
list():返回文件下的FileName的String数组
listFiles()返回问价下File的File数组
- demo
@Test
public void test4() throws IOException {
File file = new File("D:\\io\\helloworld.txt");
System.out.println(file.delete());
if(!file.exists()) {
boolean b = file.createNewFile();
System.out.println(b);
}
File file1 = new File("d:\\io\\io2");
if(!file1.exists()) {
// boolean b = file1.mkdir();//注意两个方法的区别
boolean b = file1.mkdirs();
System.out.println(b);
}
File file2 = new File("d:\\io");
String[] strs = file2.list();
System.out.println(strs.length);
File [] files = file2.listFiles();
for (int i = 0; i < files.length; i++) {
System.out.println(files[i].getName());
}
}
- 输出