
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class TestFile {
    public static void main(String[] args) throws IOException {
        // 通过这个简单的程序, 把一个文件的内容读取出来, 写入到另一个文件中. (相当于文件拷贝功能)
        String srcPath = "d:\\test1.txt";
        String destPath = "d:\\test2.txt";
        // 读写文件之前, 一定要先打开!
        // 通过这个代码打开了第一个用来读数据的文件
        FileInputStream fileInputStream = new FileInputStream(srcPath);
        // 通过这个代码打开了第二个用来写数据的文件
        FileOutputStream fileOutputStream = new FileOutputStream(destPath);
        // 循环的把第一个文件的内容按照字节来读取出来, 依次写入到第二个文件中
        while (true) {
            // read 方法依次返回的是一个字节 (byte), 但是实际上确是使用 int 来进行接收的!!
            // 这样做的理由主要是两个方面:
            // 1. Java 中不存在无符号类型. byte 这样的类型也是有符号的(有正负). byte 的表示范围 -128 => +127
            //    实际上在按照字节读取数据的时候, 并不需要让这样的数据进行算术运算. 此时, 这里的正负就没有意义了.
            //    因此期望读到的结果是一个 "无符号的数字" , 0 => 255
            // 2. read 如果读取完毕(文件读到末尾了), 就会返回 EOF (end of file). 用 -1 来表示.
            int ch = fileInputStream.read();
            if (ch == -1) {
                // 文件读取完了
                break;
            }
            fileOutputStream.write(ch);
        }
        // 文件操作完毕之后, 不要忘了关闭文件!
        // 如果忘记关闭, 可能会引起 "文件资源泄露"
        fileInputStream.close();
        fileOutputStream.close();
    }
}



















