70. 文件处理
I/O处理中最常见的是对文件的操作,java.io包中有关文件处理的类有:File
,FileInputStream
,FileOutputStream
,RamdomAccessFile
和FileDescriptor
;接口有FilenameFilter
。
一. 文件描述
类File
提供了一种与机器无关的方式来描述一个文件对象的属性。下面介绍类File
中提供的各种方法。
1. 文件或目录的生成
public File(String path)
如果path
是实际存在的路径,则该File
对象表示的是目录,如果path
是文件名,则该File对象表示的是文件。public File(String path,String name)
path
是路径名,name
是文件名。public File(File dir,String name)
dir
是路径名,name
是文件名。
2. 文件名的处理
-
public String getName()
得到一个文件的名称(不包含路径) -
public String getPath()
得到一个文件的路径名 -
public String getAbsolutePath()
得到一个文件的绝对路径名 -
public String getParent()
得到一个文件的上一级目录名 -
public boolean renameTo(File dest)
重命名文件的抽象路径名
3. 文件属性测试
-
public boolean exists()
测试当前File对象所指示的文件是否存在 -
public boolean canWrite()
测试当前文件是否可写 -
public boolean canRead()
测试当前文件是否可读 -
public boolean isFile()
测试当前文件是否是文件(不是目录) -
public boolean isDirectory()
测试当前文件是否是目录。
4. 普通文件信息和工具
-
public long lastModified()
得到文件最近一次修改的时间 -
public long length()
得到文件的长度,以字节为单位 -
public boolean delete()
删除当前文件
5. 普通文件信息和工具
-
public boolean mkdir()
根据当前对象生成一个由该对象指定的路径 -
public String[] list()
列出当前目录下的文件
public static void main(String[] args) {
File dir = new File("E:\\java"); // 表示一个目录
System.out.println("list java files in directory" + dir); // 输出路径名
String[] files = dir.list(); // 列出目录下所有的文件
for (int i = 0; i < files.length; i++) {
File f = new File(dir,files[i]); // 为每一个文件创建一个File对象
if (f.isFile()) { // 如果是文件
System.out.println("File" + f); // 输出文件名
} else {
System.out.println("sub directory" + f); // 输出目录名
}
}
}
输出结果:
list java files in directoryE:\java
FileE:\java\1.java
FileE:\java\2.java
File f4 = new File("d:/src3/TestFile666");
f4.createNewFile(); // 创建一个新的文件
mkdir:
创建目录的时候,如果前面的父目录存在,就创建;如果不存在,就创建失败。
mkdirs:
不管前面的目录存在不存在,不存在的话,则创建所有的目录
二. 文件的顺序处理
类FileInputStream和FileOutputStream用来进行文件I/O处理,由它们所提供的方法可以打开本地主机上的文件,并进行顺序地读写。
下面这段代码为顺序读取当前目录下文件名为text.txt的文件的内容。
public static void main(String[] args) {
FileInputStream fis;
try {
fis = new FileInputStream("E:\\java\\text.txt");
System.out.println("content of text is : ");
int b;
while ((b = fis.read()) != -1) { // 顺序读取文件里的内容并赋值给变量b,直到文件结束
System.out.print((char)b);
}
} catch (IOException e) {
e.printStackTrace();
}
}