18. Java IO: File

想要查看此教程的目录请点击:Java IO教程目录贴地址


Java IO 的File类可以帮助你访问底层的文件系统,使用File类你可以:

  • 查看文件或目录是否存在
  • 如果目录不存在,可以创建
  • 读取文件的长度
  • 删除或移动文件
  • 删除文件
  • 查看路径指向的事文件还是目录
  • 读取目录下的文件列表

这篇文章会告诉你更多的相关操作。
注意:File只允许你访问文件和文件系统的元数据,如果你需要读写文件的内容,那么你可以使用FileInputStream,FileOutputStream和RandomAccessFile等。
注意:如果你使用的是Java NIO,你就得使用java.nio.FileChannel。(你可以两种方法都使用,但是你只是想用Java NIO)

实例化java.io.File

在你使用File类对文件系统做一些操作之前,你必须要创建一个File实例。下面是如何创建一个实例:

File file = new File("c:\\data\\input-file.txt");

很简单对么?File类也有一些其他的构造方法供你使用。

查看文件是否存在

一旦实例化了File,你就可以检查相应的文件是否存在。如果文件不存在File类的构造方法也不会执行失败。要检查文件是否存在,调用exists()方法,下面是一个例子:

File file = new File("c:\\data\\input-file.txt");

boolean fileExists = file.exists();

如果目录不存在,那么创建一个

你可以用File类创建一个目录,如果该目录不存在。相关的方法为mkdir()和mkdirs()。

利用mkdir()创建一个文件夹,如果该文件夹不存在:

File file = new File("c:\\users\\jakobjenkov\\newdir");
boolean dirCreated = file.mkdir();

假如c:\users\jakobjenkov目录已经存在,上面的代码会创建一个jakobjenkov的子目录newdir。如果目录已经创建好,mkdir()会返回true,如果没有则返回false。

mkdirs()会创建所有所有参数中不存在的路径:

File file = new File("c:\\users\\jakobjenkov\\newdir");

boolean dirCreated = file.mkdirs();

假如C盘已经存在,例子中的代码会创建所有的相关文件夹,如果创建好则返回true,反之则为not。

文件长度

以字节读取文件的长度,调用length()方法,下面是一个例子:

File file = new File("c:\\data\\input-file.txt");

long length = file.length();

重命名或移动文件

重命名或移动一个文件,调用renameTo()方法:

File file = new File("c:\\data\\input-file.txt");

boolean success = file.renameTo(new File("c:\\data\\new-file.txt"));

正如前面所简要提到的,renameTo()方法也可以用来移动文件到另一个目录。给renameTo()方法传递的新目录名称不要与文件所在的目录一样。

renameTo()方法返回布尔类型的值,表示重命名是否成功。导致重命名或移动文件失败有很多原因,比如文件已经被其他程序打开,没有足够的权限等等。

删除文件

删除文件需要调用delete() 方法:

File file = new File("c:\\data\\input-file.txt");

boolean success = file.delete();

此方法也会返回一个布尔值表示文件是否删除成功。删除文件失败的原因可能有文件已经被其他程序打开,没有足够的权限等等。

确定指向的路径是文件还是目录

File实例可以指向文件或目录。你可以检查指向的具体是什么,这里调用isDirectory()方法。如果方法返回true那么说明指向的是目录,反之则为文件:

File file = new File("c:\\data");

boolean isDirectory = file.isDirectory();

读取目录下的文件列表

你可以通过调用list()方法或listFiles() 方法获得一个目录下的文件列表,list()方法返回一个String数组,代表指向的文件或目录的绝对路径。listFiles() 方法返回一个File数组,代表着相应文件的File对象:

File file = new File("c:\\data");

String[] fileNames = file.list();

File[]   files = file.listFiles();

你可能感兴趣的:(18. Java IO: File)