5.17Java文件字符流(注意字符和字节的使用场景)

5.17Java文件字符流(注意字符和字节的使用场景)

Reader和Writer

FileReader--->与FileInputStream成对

通过字符的方式读取文件,仅适合字符文件

FileWriter--->与FileOutputStream成对,可以处理字符串

通过字节的方式写出或追加数据到文件中,仅适合字符文件

Writer当中重载了三个方法--->append方法,可以一致.append.append往下添加下去

package iostudy.ioprogramme;

import java.io.*;

/**
* 文件字符输入流
* 1、创建源
* 2、文件字符输入流
* 3、操作
* 4、释放资源
* @since JDK 1.8
* @date 2021/5/17
* @author Lucifer
*/
public class IoReader {
   public static void main(String[] args) {
       //创建源
       File src = new File("D:/workspace/practice/main/java/iostudy/ioprogramme/abc.txt");
       /*选择输入流*/
       Reader reader = null;
       //操作文件
       try {
           //创建读取对象
           reader = new FileReader(src);
           //新建缓冲区(缓冲容器)
           char[] flush = new char[1024];
           //一次接收长度的大小--->当为空时返回的是-1
           int temp = -1;
           //开始进行读取操作
           while ((temp=reader.read(flush))!=-1){
               //因为已经是字符数组,所以直接构建成字符串
               String str = new String(flush, 0, temp);
               System.out.println(str);
               System.out.println("Successfully");
          }
      }catch (FileNotFoundException e){
           e.printStackTrace();
      }catch (IOException e){
           e.printStackTrace();
      }finally {
           try {
               if (null!=reader){
                   //关闭文件
                   reader.close();
              }
          }catch (IOException e){
               e.printStackTrace();
          }
      }
  }
}

文件字符输出流

package iostudy.ioprogramme;

import java.io.*;

/**
* 测试文件字符输出流
* 1、创建源
* 2、选择输出流
* 3、进行文件操作
* 4、关闭源文件
* @since JDK 1.8
* @date 2021/5/17
* @author Lucifer
*/
public class IoWriter {
   public static void main(String[] args) {
       /*创建源*/
       File dest = new File("D:/workspace/practice/main/java/iostudy/ioprogramme/abc.txt");
       /*选择流*/
       Writer writer = null;
       //尝试进行操作
       try {
           //创建FileWriter对象
           writer = new FileWriter(dest);
           /*创建内容*/
           String str = "韦俊是真的帅\r\n韦俊是真的好看";
//           /*创建缓冲区*/
//           char[] datas = str.toCharArray(); //这是一个方法,直接获取字符内容放进数组中--->字符串变成字符数组,不存在编码问题
//           /*用方法写出内容*/
//           writer.write(datas, 0, datas.length);
//           //写法二--->直接往里面写
//           writer.write(str, 0, 2); //最后一个形参是指定写出来的字符个数
           //写法三--->使用append来写
           writer.append("韦俊").append("是真的").append("帅"); //因为这个类实现了CharSequence接口--->字符序列化接口--->给字符排序
           /*
           注意区别write和append的区别--->处理字符文件,不要去处理图片,会破坏文件
            */
           /*强制刷新一下*/
           writer.flush();
      }catch (FileNotFoundException e){
           e.printStackTrace();
      }catch (IOException e){
           e.printStackTrace();
      }finally {
           //释放资源
           try {
               //如果前面都没有异常
               if (null!=writer){
                   writer.close();
              }
          }catch (IOException e){
               e.printStackTrace();
          }
      }
  }
}

 

It's a lonely road!!!
原文地址:https://www.cnblogs.com/JunkingBoy/p/14779469.html