JAVA IO(1) Reader与Writer

流操作分为两种 :1、字节流 

                             2、字符流:字节流读取文字字节数据后,不直接操作而是先查找指定的编码表,获取对应的文字,

                                  再对这个文字进行操作。简单说:字节流+编码表。

输入流(读):把外设数据加载进内存。

输出流(写):把内存数据写入到外设中。

 

IO常用基类(由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀,如FileInputStream、FileReader) :

 1、字节流的抽象基类:InputSream OutputStream

 2、字符流的抽象基类(操作文字优先考虑):Reader  Writer

public class FileWriterDemo {
     
     private static final String LINE_SEPARATOR =  System.getProperty("line.separator");//调用系统换行变量
     public static void main(String[] args) {
         //要明确写入文字的目的地。如果文件不在会自动创建,如果在则覆盖
         FileWriter fw = null;
         try {
              fw = new  FileWriter("C:\\Users\\hp\\Desktop\\demo.txt",true);//boolean代表是否进行续写
              fw.write("testing"+LINE_SEPARATOR+"hahaha");//把数据写入临时存储缓冲区(写到流里)
              fw.flush();
         }catch(IOException e) {
              e.printStackTrace();
         }finally{
              if(fw != null) {//如果路径不存在则fw为null,不加判断会报空指针
                  try {
                       fw.close();//关闭前先刷新,关闭后不能写。
                  }catch(IOException e) {
                       throw new RuntimeException("系统错误");
                  }
              }
         }
     }
}
public class FileReaderDemo {
     
     public static void main(String[] args) {
         //明确被读取文件,必须存在!!!用一个读取流关联已存在文件
         FileReader fr = null;
         try {
              fr = new  FileReader("C:\\Users\\hp\\Desktop\\demo.txt");
              char[] res = new char[1024]; //最好是1024的n倍
              int num = 0;
              while((num = fr.read(res)) != -1) {
                  //读到几个显示几个。若数组一次装不下第二次读取的数据会从数组开始装填覆盖后面的数据
                  System.out.print(new  String(res,0,num));
              }
         }catch(IOException e) {
              e.printStackTrace();
         }finally {
              if(fr != null) {
                  try {
                       fr.close();
                  }catch(IOException e) {
                       throw new RuntimeException("系统错误");
                  }
              }
         }
     }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值