Java之文件

  文件处理是最常见的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)文件常用操作

费话不说,请看源码:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class TestFile {
    /**
     * 
     * @param path
     *            创建的目录名,绝对路径
     */
    public static File CreateDir(String path) {
        File fileDir = new File(path);
        if (!fileDir.exists()) {
            fileDir.mkdirs();
            return fileDir;
        }
        System.out.println("目录已存在");
        return fileDir;
    }

    /**
     * 
     * @param path
     *            绝对路径名
     * @param name
     *            文件名
     * @return 文件对象
     */
    public static File 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();
            }
            return file;
        }
        System.out.println("文件已存在");
        return file;
    }

    /**
     * 
     * @param path
     *            绝对路径名
     * @param name
     *            文件名
     * @return 是否删除成功
     */
    public static boolean DelFile(String path, String name) {
        File file = new File(path + File.separator + name);
        if (file.exists()) {
            file.delete();
            return true;
        }
        System.out.println("文件不存在");
        return false;
    }

    /**
     * 
     * @param fromFile
     *            源文件
     * @param toFilePath
     *            目的文件路径
     * @param toFileName
     *            目的文件名
     * @throws IOException 
     */
    public static void copyFile(String fromFile, String toFilePath,
            String toFileName) throws IOException {
        File Ffile = new File(fromFile);
        if (!Ffile.exists()) {
            System.err.println("源文件不存在");
            return;
        }
        // 建立目的文件
        File Tfile = CreateFile(toFilePath, toFileName);
        
        //利用FileInputStream 与 FileOutputStream完成文件copy
        FileInputStream fin = new FileInputStream(Ffile);
        byte[] b = new byte[fin.available()];
        fin.read(b);
        FileOutputStream fout = new FileOutputStream(Tfile);
        fout.write(b);
        System.out.println("copy finished!");
        fin.close();
        fout.close();
    }

}
原文地址:https://www.cnblogs.com/byghui/p/2941493.html