java 流

Posted yuanGrowing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 流相关的知识,希望对你有一定的参考价值。

1、字符流     之前讲过字节流,字节流指的是数据在传输的时候是以字节的形式传输的,而字符流是以字符(双字节)的形式传输的。字符流和字节     流的原理与使用方式都是差不多的,只是底层的读取和传输单位不一样。 2、各种字符流     2.1 输入字符流(各种Reader)                      从上面的图中可以看出,和字节流一样,所有的字符流也有一个基类,就是Reader,Reader也提供了一个read方法,不过每一             次读的是char类型。             同样以读取文件为例,来看一下各种Reader的使用             以Reader来读取文件:
public static void main(String args[])         File file = new File("C:\\\\Users\\\\Administrator\\\\Desktop\\\\test.txt");         if(!file.exists())             try                 file.createNewFile();             catch (IOException e)                 e.printStackTrace();                             Reader reader = null ;         try             reader = new FileReader(file);             char[] chars = new char[1024];//定义一个够长的字符数组来保存读入的数据             int length = reader.read(chars);//将文件中的数据存到chars里面,返回读取到的字符数             for(int i=0;i<length;i++)                 System.out.println(chars[i]);                     catch (FileNotFoundException e)             e.printStackTrace();         catch (IOException e)             e.printStackTrace();         finally             try                 reader.close();             catch (IOException e)                 e.printStackTrace();                        
            以FileReader来读取文件(和Reader没什么不同):
try             reader = new FileReader(file);             char[] chars = new char[1024];//定义一个够长的字符数组来保存读入的数据             int length = reader.read(chars);//将文件中的数据存到chars里面,返回读取到的字符数             for(int i=0;i<length;i++)                 System.out.println(chars[i]);                     catch (FileNotFoundException e)             e.printStackTrace();         catch (IOException e)             e.printStackTrace();         finally             try                 reader.close();             catch (IOException e)                 e.printStackTrace();                    
            以BufferedReader来读取,在这个Reader里面提供了以字符串形式读取数据
BufferedReader reader = null;   try    reader = new BufferedReader(new FileReader(file));    System.out.println(reader.readLine());   catch (FileNotFoundException e)    e.printStackTrace();   catch (IOException e)    e.printStackTrace();   finally    try     reader.close();     catch (IOException e)     e.printStackTrace();      
        以InputStreamReader来读取数据,这种方式是将字节流转换成字符流,而且可以控制转换时的字符编码:         (编码的不同会影响中文的解析,但是并不会影响引文和数字等的解析)
InputStreamReader inputStreamReader = null ;         try             inputStreamReader = new InputStreamReader(new FileInputStream(file),"gbk");             BufferedReader bufferedReader = new BufferedReader(inputStreamReader);             System.out.println(bufferedReader.readLine());         catch (FileNotFoundException e)             e.printStackTrace();         catch (UnsupportedEncodingException e)             e.printStackTrace();         catch (IOException e)             e.printStackTrace();        
        2.3 各种Writer             Writer的使用可以参考Reader的使用         2.4 BufferWriter和BufferOutputStream的比较             我使用两个文件,来测试两者的写入效率。
File file = new File("C:\\\\Users\\\\Administrator\\\\Desktop\\\\test.txt");         File file1 = new File("C:\\\\Users\\\\Administrator\\\\Desktop\\\\test1.txt");   if (!file.exists())    try     file.createNewFile();     catch (IOException e)     e.printStackTrace();               if(!file1.exists())             try                 file1.createNewFile();             catch (IOException e)                 e.printStackTrace();                             BufferedWriter bufferedWriter = null ;         BufferedOutputStream bufferedOutputStream = null ;         try             byte[] bytes = new byte[1000*1000*500];             for(int i=0;i<bytes.length;i++)                 bytes[i] = 12 ;                         char[] chars = new char[bytes.length/2];             for(int i=0;i<chars.length;i++)                 chars[i] = 'a' ;                         long start = System.currentTimeMillis();             bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(file));             bufferedOutputStream.write(bytes);             bufferedOutputStream.flush();             long end = System.currentTimeMillis();             System.out.println(end-start);             bufferedWriter = new BufferedWriter(new FileWriter(file1));             start = System.currentTimeMillis();             bufferedWriter.write(chars);             bufferedWriter.flush();             end = System.currentTimeMillis();             System.out.println(end-start);         catch (FileNotFoundException e)             e.printStackTrace();         catch (IOException e)             e.printStackTrace();        
            测试结果显示,当写入数据小时,使用BufferOutStream比使用BufferWriter要快很多,但是当写入数据越来越大是,             BufferWriter变得越来越有优势。             


            


























以上是关于java 流的主要内容,如果未能解决你的问题,请参考以下文章

知网的引文网络工具用法

Latex:章节标题中的引文首先放入目录

关于中世纪的论文的引文,谢啦 要英文的

怎样将endnote中引文输出格式改为gb7714-87

显示引文功能手册

在流分析中使用 Tumbling 窗口 2 小时未按预期输出