Java字符流字节流的使用以及文件路径

1.FileReader/FileWriter的使用:
1.1 FileReader的使用
1.read的理解:返回读入的一个字符,如果达到文件末尾,返回-1
2.异常的处理:为了保证流资源一定可以执行关闭操作,需要使用try-catch-finally处理
3.读入的文件一定要存在,否则报异常

FileReader f1 = new FileReader(new File("文件路径"));
FileReader f2 = new FileReader("文件路径");  // 这种写法也可以
char chars = new chars[100];   // 一次读取的字符数量
int len = f1.read(chars)  // 一次读取的字节数量放到一个整数里,可以防止少读或多读

1.2 FileWriter
从内存中写出数据到硬盘的文件里。
说明:
        1. 输出操作,对应的File文件可以不存在,并不会报异常
        2. File对应的硬盘中的文件如果存在:
            如果流的构造器使用的是:FileInputStream(file,false) / FileWriter(file):对原文件的覆盖
            如果流的构造器使用的是:FileInputStream(file,true):不会覆盖原文件,而是在原文件的基础上追加内容

2.FileInputStream / FileOutputStream的使用:
 1.对于文本文件(.txt,.java,.cpp),使用字符流进行处理
 2.对于非文本文件(.jpg,.mp3,.mp4,.avi,.doc,.ppt),使用字节流进行处理
下图是对非文本文件的一个处理
 

public class InputStreamTest {
    @Test
    public void InputStreamReaderTest() {
        FileInputStream f1 = null;
        FileOutputStream f2 = null;
        try {
            File file1 = new File("that.png");
            File file2 = new File("this.png");
            f1 = new FileInputStream(file1);
            f2 = new FileOutputStream(file2);
            byte[] bytes = new byte[1024];
            int len;
            while ((len = f1.read(bytes)) != -1){
                f2.write(bytes,0,len);
            }
            System.out.println("复制完成");
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            if (f1 != null) {
                try {
                    f1.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            if (f2 != null) {
                try {
                    f2.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }
}

【注意】
相对路径下,IDEA和Eclipse中使用的区别
IDEA:
如果使用单元测试,相对路径是基于当前Module的
如果使用main()测试,相对路径是基于当前Project的

Eclipse:
单元测试方法还是main方法,都是基于当前Project的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值