java.io.File类

  • 1.凡是与输入、输出相关的类、接口等都定义在java.io包下
  • 2.File是一个类,可以有构造器创建其对象。此对象对应着一个文件(.txt .avi .doc .ppt .mp3 .jpg)或文件目录
  • 3.File类对象是与平台无关的。
  • 4.File中的方法,仅涉及到如何创建、删除、重命名等等。只要涉及文件内容的,File是无能为力的,必须由io流来完成。
  • 5.File类的对象常作为io流的具体类的构造器的形参。
  • 6.File的静态属性String separator存储了当前系统的路径分隔符。在unix中,此字段为​​/​​​ ,在windows中,为​​\\​​。

File类的构造函数有以下几种:

1)File(String pathname) 

2)File(String parent, String child)

3)File(File parent, String child)

4)File(URI uri)

构造的File类对象表示一个路径,指向我们的目标文件或文件夹。

即,如果目标文件不存在,并不会创建物理目标文件!

File path = new File(".");  表示当前目录。

File path = new File("E:\\Java"); 表示Windows下的E盘里的Java文件(或者是文件夹),注意要用双斜线\\。

File path = new File(new File("."),"bin"); 表示当前文件夹下的bin文件(文件夹),如果没有bin就会抛出NullPointerException异常。

创建文件、或者文件夹里文件对象

主要方法如下:
createNewFile()–创建新文件对象
delete()
mkDir():创建一个文件目录。只有在上层文件目录存在的情况下,才能返回true
mkDirs():创建一个文件目录。若上层文件目录不存在,一并创建。
list()–获取文件夹里面的文件名字

Returns an array of strings naming the files and directories in the directory denoted by this abstract pathname.

listFiles()–获取文件夹里面的文件对象


@Test
public void test3() throws IOException{
File file1 = new File("d:/io/helloworld.txt");
System.out.println(file1.delete());

if(!file1.exists()){
boolean b = file1.createNewFile();
System.out.println(b);
}

File file2 = new File("d:\\io1\\io2");
if(!file2.exists()){
boolean b = file2.mkdirs();
System.out.println(b);
}

File file3 = new File("d:\\teach");
String[] strs = file3.list();
for(int i = 0;i < strs.length;i++){
System.out.println(strs[i]);
}

System.out.println();

File[] files = file3.listFiles();
for(int i = 0;i < files.length;i++){
System.out.println(files[i].getName());
}
}

判断是否存在、读写以及路径或者File

主要方法如下:
exists()–是否存在
canWrite()
canRead()
isFile()–判断是否为File
isDirectory()–判断是否路径
lastModified()–最后一次修改时间
length()–字节大小

@Test
public void test2(){
File file1 = new File("d:/io/helloworld.txt");
File file2 = new File("d:\\io\\io1");

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());

System.out.println();

System.out.println(file2.exists());
System.out.println(file2.canWrite());
System.out.println(file2.canRead());
System.out.println(file2.isFile());
System.out.println(file2.isDirectory());
System.out.println(new Date(file2.lastModified()));
System.out.println(file2.length());

}

result as follows :

true
true
true
true
false
Mon Dec 05 16:45:11 CST 2016
0

true
true
true
false
true
Mon Dec 05 16:35:32 CST 2016
0

获取文件路径或者文件名字,相对或者绝对,父级文件对象,重命名文件

主要方法如下:

路径:

绝对路径:包括盘符在内的完整的文件路径
相对路径:在当前文件目录下的文件的路径

getName()
getPath()
getAbsoluteFile()–得到的为File
getAbsolutePath()–得到的为String
getParent()
renameTo(File newName)


@Test
public void test1(){
//表示在项目名目录下
File file1 = new File("1.jpg");
File file2 = new File("hello1.txt");

File file3 = new File("d:\\io\\io1");
File file4 = new File("d:\\io2");

System.out.println(file1.getName());
System.out.println(file1.getPath());
System.out.println(file1.getAbsoluteFile().getClass());
System.out.println(file1.getParent());
System.out.println(file1.getAbsolutePath().getClass());

System.out.println();

System.out.println(file3.getName());
System.out.println(file3.getPath());
System.out.println(file3.getAbsoluteFile());
System.out.println(file3.getParent());
System.out.println(file3.getAbsolutePath());

//renameTo(File newName):重命名
//file1.renameTo(file2):file1重命名为file2.要求:file1文件一定存在,file2一定不存在
// boolean b = file1.renameTo(file2);
// System.out.println(b);
//
// boolean b1 = file4.renameTo(file3);
// System.out.println(b1);
}
}

result as follows :

1.jpg
1.jpg
class java.io.File
null
class java.lang.String

io1
d:\io\io1
d:\io\io1
d:\io
d:\io\io1