天天看点

Java IO: File

java io api中的file类可以让你访问底层文件系统,通过file类,你可以做到以下几点:

检测文件是否存在

读取文件长度

重命名或移动文件

删除文件

检测某个路径是文件还是目录

读取目录中的文件列表

请注意:file只能访问文件以及文件系统的元数据。如果你想读写文件内容,需要使用fileinputstream、fileoutputstream或者randomaccessfile。如果你正在使用java nio,并且想使用完整的nio解决方案,你会使用到java.nio.filechannel(否则你也可以使用file)。

在使用file之前,必须拥有一个file对象,这是实例化的代码例子:

<code>1</code>

<code>file file = </code><code>new</code> <code>file(</code><code>"c:\\data\\input-file.txt"</code><code>);</code>

很简单,对吗?file类同样拥有多种不同实例化方式的构造函数。

当你获得一个file对象之后,可以检测相应的文件是否存在。当文件不存在的时候,构造函数并不会执行失败。你已经准备好创建一个file了,对吧?

通过调用exists()方法,可以检测文件是否存在,代码如下:

<code>2</code>

<code>3</code>

<code>boolean</code> <code>fileexists = file.exists();</code>

通过调用length()可以获得文件的字节长度,代码如下:

<code>long</code> <code>length = file.length();</code>

通过调用file类中的renameto()方法可以重命名(或者移动)文件,代码如下:

<code>boolean</code> <code>success = file.renameto(</code><code>new</code> <code>file(</code><code>"c:\\data\\new-file.txt"</code><code>));</code>

通过调用delete()方法可以删除文件,代码如下:

<code>boolean</code> <code>success = file.delete();</code>

delete()方法与rename()方法一样,返回布尔值表明是否成功删除文件,同样也会有相同的操作失败原因。

file对象既可以指向一个文件,也可以指向一个目录。可以通过调用isdirectory()方法,可以判断当前file对象指向的是文件还是目录。当方法返回值是true时,file指向的是目录,否则指向的是文件,代码如下:

<code>file file = </code><code>new</code> <code>file(</code><code>"c:\\data"</code><code>);</code>

<code>boolean</code> <code>isdirectory = file.isdirectory();</code>

你可以通过调用list()或者listfiles()方法获取一个目录中的所有文件列表。list()方法返回当前file对象指向的目录中所有文件与子目录的字符串名称(译者注:不会返回子目录下的文件及其子目录名称)。listfiles()方法返回当前file对象指向的目录中所有文件与子目录相关联的file对象(译者注:与list()方法类似,不会返回子目录下的文件及其子目录)。代码如下:

<code>string[] filenames = file.list();</code>

<code>4</code>

<code>5</code>

<code>file[] files = file.listfiles();</code>