• 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!!!
  • 相关阅读:
    006_tcpdump专题
    002_阿里监控平台的“打怪升级”之路
    001_谈阿里核心业务监控平台SunFire的技术架构
    001_前端面试集合
    007_zkCli.sh
    007_Chrome的Waterfall详解
    021_supervise进行管理利器
    028_shell脚本递归求值
    MySQL -- 在磁盘爆满后复制的状态
    MySQL -- 内存使用监控详解
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14779469.html
Copyright © 2020-2023  润新知