文件处理是最常见的I/O处理。在实际的编程中不可避免的用到。Java的文件操作涉及的类其实也不多,好好总结一下,感觉也不难。
A)File类
欲对文件进行操作首先需要知道文件的有关信息,如文件的名称、路径、属性等。Java中通过File类来提供所有这些。File类提供了一种与机器无关的方式来描述一个文件的信息。每个File类对象表示一个磁盘文件或目录。
File类常用构造方法
构造方法
描述
public File(String path)
用path参数创建File对象所对应的磁盘文件或目录
public File(String path,String name)
以path为路径,以name为文件或目录名创建File对象
public File(File dir,String name)
以dir为目录,以name为文件或目录
File类常用方法
方法
描述
public String getName()
获取文件名或目录
public String AbsolutePath()
获取文件或目录的绝对路径
public String getParent()
获取文件或目录的上一级目录
public boolean canWrite()
测试文件是否可写
public boolean isDirectory()
测试当前File对象是否为目录
public String renameTo(File newName)
文件改名
public boolean mkdir()
创建单级目录
public String[] list()
获取当前目录下的所有文件或目录
B)FileInputStream类和FileOutputStream类
FileInputStream类和FileOutputStream类 分别继承自InputStream、OutputStream,它们重写或实现了父类中的所有有方法,因此在此节中不再介绍它们的常用方法请参见笔者此篇:http://www.cnblogs.com/byirain/archive/2013/03/03/2937814.html
a) FileInputStream
主要用来处理二进制文件的读取工作。
FileInputStream类的常用构造方法
构造方法
描述
public FileInputStream(String name)
以name为文件名创建FileInputStream对象
public FileInputStream(File file)
以file为文件名创建FileInputStream对象
b)FileOutputStream
主要用来处理二进制文件的写入工作。
FileOutputStream类的常用构造方法
public FileOutputStream(String name)
以name为文件名创建
public FileOutputStream(String name,boolean a)
同上,但若a为true,则数据追加在原数据之后
public FileOutputStream(File file)
以file为文件名创建
C)FileReader类和FileWriter类
FileReader类和FileWriter类与FileInputStream类和FileOutputStream类相似,不同之处在于前者处理的单位为字符(char)后者为字节(byte),在此不再赘述。
D)文件常用操作
费话不说,请看源码:
importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;public classTestFile {/***
*@parampath
* 创建的目录名,绝对路径*/
public staticFile CreateDir(String path) {
File fileDir= newFile(path);if (!fileDir.exists()) {
fileDir.mkdirs();returnfileDir;
}
System.out.println("目录已存在");returnfileDir;
}/***
*@parampath
* 绝对路径名
*@paramname
* 文件名
*@return文件对象*/
public staticFile CreateFile(String path, String name) {
CreateDir(path);
File file= new File(path + File.separator +name);if (!file.exists()) {try{
file.createNewFile();
}catch(IOException e) {//TODO Auto-generated catch block
e.printStackTrace();
}returnfile;
}
System.out.println("文件已存在");returnfile;
}/***
*@parampath
* 绝对路径名
*@paramname
* 文件名
*@return是否删除成功*/
public static booleanDelFile(String path, String name) {
File file= new File(path + File.separator +name);if(file.exists()) {
file.delete();return true;
}
System.out.println("文件不存在");return false;
}/***
*@paramfromFile
* 源文件
*@paramtoFilePath
* 目的文件路径
*@paramtoFileName
* 目的文件名
*@throwsIOException*/
public static voidcopyFile(String fromFile, String toFilePath,
String toFileName)throwsIOException {
File Ffile= newFile(fromFile);if (!Ffile.exists()) {
System.err.println("源文件不存在");return;
}//建立目的文件
File Tfile =CreateFile(toFilePath, toFileName);//利用FileInputStream 与 FileOutputStream完成文件copy
FileInputStream fin = newFileInputStream(Ffile);byte[] b = new byte[fin.available()];
fin.read(b);
FileOutputStream fout= newFileOutputStream(Tfile);
fout.write(b);
System.out.println("copy finished!");
fin.close();
fout.close();
}
}