java IO学习

      最近打算开发一个小脚本,此脚本的功能需求需要用到javaIO流的部分,这个方面一直掌握的不是很好,所有就认真饿学习了一下,以下是学习心得,请指教!!

      java的IO流部分主要分为两大类,一类是输入,另一类就是输出了!所以最基本输入输出类就是InputStream和OutputSream。InputSream调用read()方法实现数据的读入。当然这里是一程序为中心。站在程序这一方看IO流的

的工作方式。那么OutputStream调用write()方法实现数据输出。其他的功能类都是从这个基本的类派生出来的。也就是继承了这两个基本类。

      那什么是流呢?

     在理解流之前,我们先要理解“数据源”。数据源,对于对于输入流而言,就是获得数据的、产生数据的地方。对于输出流而言,就是将数据输出到什么地方。那么不难理解了,数据源就是存放数据的地方了。在计算里,我们可以存放数据的地方,首先就是file文件了。这是最主要的存放数据的地方了。其实就是内存。在内存中存放的数据可以是String字符串的类型,也可以是数组类型。这些就是数据源。我们可以从这些地方读取数据,也可以从这些地方存放数据。最大的数据源应该网络数据源了。我现在工作的公司就是在网上获得数据的。

     那什么是流呢?我的理解就是程序和数据源之间通信的工具类叫做流。他封装了底层物理器件的工作过程。使我们很方便的调用这些类,就实现了数据的转移。而这些数据就像水流一样,通过这些工具类搭建的管道流到目的地。

    在传输过程中数据都是以01的形式存在,并没有什么区别。但是当我们打算传输时或者解析接收到得数据时,我们会怎样的形式解析呢!最基本要分为两种方式。一个就是按字节的方式解析,另一种就是按字符的方式解析。

   综上所述,根绝输入和输出的不同,以及解析时按字节和字符的要求等。我们将IO流功能类以下表的形式表示

字节字符
InputStreamReader
OutputStreamWriter
FileInputStreamFileReader
FileOutputStreamFileWriter
StringBufferedInputStreamStringReader
 StringWriter
ByteArrayInputStreamCharArrayReader
ByteArrayOutputStreamCharArrayWriter

    根据源的不同和字节与字符的不同分别定义了这些工具了。到底使用什么类根据需求而定。

一、 File流工具类的使用:

       1、文件流工具类FileInputStream、FileOutputStream、FileReader和FileWriter类。

            这些类都通过构造方法指向固定的文件。read()和write() 方法可以将数据读取(写入)文件。这个数据可以是字符(字节)或者是字符数组(字节数组)。

           BufferedReader in=new BufferedReader(new InputStreamReader(new FileInputStream("./sxd/form/filrtest.txt")));

          也可以定义成:

          BufferedReader in=new  BufferedReader(new FileReader("("./sxd/form/filrtest.txt"));

          String s; //用于接收字符数据

          while((s=in.readline())!=null){

                   System.out.println(s);

          }

   读取文件来说用字节和字符方式并没有什么区别明显的区别。主要的区别是他们提供的方法,你更喜欢用那个。在字节

  转换成字符时需要在外面包装方法InputStreamReader和OutputStreamWriter两个类作为字符和字节之间的桥梁。

二、内存中的数据的读取和写入:

    这方面得流工具类,我用的比较少。

    String str=new String("this is test String")

    StringReader in=new StirngReader(s);

 

    int c;// StringReader类的read()方法每次返回的是一个Int类型的值

   while((c=in.read())){

        System.out.println((char)c);

   }

 

三 、包装器类的使用:

     根据字节和字符的区别包装器类也分为两类,详情请看下表:

    

字节字符
FilterInputStreamFilterReader
FilterOutputStreamFilterWriter
BufferedInputStreamBufferedReader
BufferedOutputStreamBufferedWriter
DataInputStreamLineNumberReader
PrintStreamPrintWriter

   

       这些就是常用的包装类,其中FileterInputStream、FilterOutputStream、FilterReader和FilterWriter为

抽象类。起作用是起到装饰器类和工具流之间的接口作用。为什么这些装饰器类可以包装工具类关键就在这些接口类。

这里重点介绍一下PrintWriter类。

      PrintWriter是文本文件的快捷方式。他内部定义缓存机制。可以直接使用这个类将数据输入到指定的文件中。

      String str="this is worldof developer";

      PintWriter out =new PrintWriter("./com/form/eric.txt");

      out.println(s);

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值