Java 使用 IO 流往文件中读、写内容

1、如何往一个文件里面写内容?

public class Test_3{
   
    //  字符流读取一个文件的内容
        @Test
        public void fileRead() throws IOException {
            char[] c = new char[500];       // 设置一个足够大的数组
            FileReader fileReader = new FileReader("E://aaa.txt");
            int num = fileReader.read(c);       // 读取文件里的内容到数组里,并返回读取的长度
            String str = new String(c);         // 把数组转为字符串
            System.out.println("读取的字符个数为:" + num + ",其内容如下:" + str);
            fileReader.close();                 // 关闭流
        }
    
   //  字节流读取一个文件的内容
       @Test
        public void inputStream() throws IOException {
            byte[] c = new byte[500];               // 定义一个字节数组存内容
            File file = new File("E://aaa.txt");    // 获取文件路径
            FileInputStream fileInputStream = new FileInputStream(file);    // 创建一个字节流
            int num = fileInputStream.read(c);          // 读取文件内容,并把读取到内容存到数组里
            String str = new String(c);                 // 把数组转为字符串
            System.out.println("读取到的内容长度为:" + num);
            System.out.println("读取到的内容:" + str);
            fileInputStream.close();                    // 关闭流
        }
  
   //   字符流把内容写入文件里面
        @Test
        public void fileWriter() throws IOException {
            String str = "追加把";        // 准备好需要需要写入的内容
        //  如果不想覆盖掉原来文件的内容,则在路径后加一个参数,
        //  该参数是否追加在原内容后面,默认为 false
            FileWriter fileWriter = new FileWriter("E://aaa.txt", true);
            fileWriter.write(str);
            fileWriter.append("我想追加啊");
            fileWriter.close();
            fileRead();
        }
        
   //  字节流把内容写入文件里面
       @Test
       public void fileOutputStream() throws IOException {
           byte[] a = {'a', 's', 'd', 'f', 'g'};       // 创建一个字节数组
           FileOutputStream outputStream = new FileOutputStream("E://aaa.txt");    // 创建一个字节输入流
           outputStream.write(a);                        // 把内容写到文件里
           outputStream.close();                         // 关闭流
           inputStream();                                // 调用字节输出流查看内容
       }     
        
        
}

2、FileOutputStream、FileInputStream 和 FileWriter、FileReader 有什么区别?

  • FileOutputStream 是属于字节输出流(写),继承于 OutputStream。
  • FileInputStream 是属于字节输入流(读),继承于 InputStream。
  • FileWriter 是属于字符输入流(写),FileWriter 有一个缓冲区,在写入内容后,要等待缓冲区满了或者流被刷新后 才会把数据一次性写入到文件中,否则则不会吧内容写入到文件中,继承于 OutputStreamWriter 。
  • FileReader 是属于字符输出流(读),FileReader 也有缓冲区,与 FileWriter 同理,继承于 InputStreamReader 。

3、FilWriter 和 FileReader 的作用

作用: 用于在格式/解析与传递之间缓存字符序列。对于输出,较短的字符序列格式化之后并不马上输出,而是保存在缓冲区里,待累积到一定规模之后再传递到外部设备。相反,从外部设备读入的大量数据也是先放在缓冲区,然后逐步取出完成输入。默认时,IO流的输入输出都是经过缓冲的,也可以让IO流工作在无缓冲模式下。

使用缓冲区的优势:

  1. 避免频繁操作磁盘,减少耗能,把数据都存到缓冲区中,待一定量再作磁盘操作。
  2. 直接操作缓冲区的速度比操作磁盘速度快,提高性能。

所以,在有大量的读写操作时候建议使用缓冲区。

4、OutputStreamWriter 和 InputStreamReader 的是什么?其作用是什么?

是字节流和字符流的一个转换类,其作用主要用于字节与字符之间的相互转换。

使用场景: 是将一种字符表达式转换成另一种字符表达式。如果格式化产生的字符表达式与外部字符表达式不同(输出时),或者外部表达式与IO流能解析的表达式不同(输入时),就必须进行编码转换。如多字节编码与宽字符编码之间的转换等。多数情况下并不需要进行编码转换。

  • OutputStreamWriter 是 Writer 的子类,将字符流变为字节流,即:将一个字符流输出对象变为字节流输出对象。
  • InputStreamReader 是 Reader 的子类,将字节流变为字符流,即:将一个字节流的输入对象变为字符流输入对象。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值