• IO流


    1.InputStream 

      InputStream是一个抽象类,是字节流的基类。

    示例1:

     1 public void testInputSteam() throws IOException
     2     {
     3         //1.创建文件流
     4         InputStream input=new FileInputStream("abc.txt");
     5         
     6         //2.读取文件内容
     7         byte [] buffer=new byte[10];
     8         int len=0;
     9         //read(byte[] b)返回每次读取的字节个数。如果到达流的末尾,则返回-1;
    10         while ((len=input.read(buffer))!=-1)
    11         {
    12             for(int i=0;i<len;i++)
    13             {
    14                 System.out.print((char)buffer[i]);
    15             }
    16             
    17         }
    18 
    19         //3.关闭文件流,这一步千万别忘记。程序中打开的文件 IO 资源不属于内存里的资源,垃圾回收机制无法回收该资源,所以应该显式关闭文件 IO 资源。
    20         input.close();
    21     }
    View Code

    示例2:

     1 public void testInputSteam2() throws IOException
     2     {
     3         //1.创建文件流
     4         InputStream input=new FileInputStream("abc.txt");
     5         
     6         //2.读取文件内容
     7         byte [] buffer=new byte[1024*10];
     8 
     9         //read(byte[] b, int off, int len):从off位置开始读取len长度到b数组中
    10         input.read(buffer, 0, input.available());
    11         for(int i=0;i<buffer.length;i++)
    12             System.out.print((char)buffer[i]);
    13 
    14         //3.关闭文件流
    15         input.close();
    16     }
    View Code

    2.Reader

      Reader是一个抽象类,是字符流的基类。

    示例1:

     1         public void testReader() throws IOException
     2     {
     3         //1.创建文件流
     4         Reader reader=new FileReader("hello.txt");
     5         
     6         //2.读取文件内容
     7         char [] buffer=new char[10];
     8         int len=0;
     9         while( (len=reader.read(buffer))!=-1 )
    10         {
    11             for(int i=0;i<len;i++)
    12             {
    13                 System.out.print(buffer[i]);
    14             }
    15         }
    16         
    17         //3.关闭文件流
    18         reader.close();        
    19     }    
    View Code

     3.OutputStream

    示例1:

     1         /*
     2      * 将文件a的内容复制到文件b中
     3      */
     4     @Test
     5     public void testOutputStream() throws IOException
     6     {
     7         /*1.新建一个指向文件a的输入流*/
     8         InputStream in=new FileInputStream("abc.txt");
     9         /*2.新建一个指向文件b的输出流*/
    10         OutputStream out=new FileOutputStream("abc2.txt");
    11         /*3.将从文件a读取的内容输出到文件b中*/
    12         byte [] buffer=new byte[1024 *10];    
    13         int len=0;
    14         while( (len=in.read(buffer)) !=-1)
    15         {
    16             out.write(buffer, 0, len);
    17         }
    18         /*4.关闭输入流,输出流*/
    19         in.close();
    20         out.close();
    21     }    
    View Code

    4.Writer

    示例1:

     1         /*
     2      * 利用字符流完成两个文件的复制
     3     */
     4     @Test
     5     public void testWriter() throws IOException
     6     {
     7         //新建输入流
     8         Reader reader=new FileReader("abc.txt");
     9         //新建输出流
    10         Writer writer=new FileWriter("abc3.txt");
    11         
    12         char [] buffer=new char[10];
    13         int len=0;
    14         //从a文件中读出数据放入缓冲数组中,再将该字符数组写入到b文件
    15         while((len=reader.read(buffer)) !=-1)
    16         {
    17             //注意使用的方法是wirte(char[] b,int offset,int len),而不是wirte(char[] b),否则最后一次写入是会超出
    18             writer.write(buffer, 0, len);
    19         }
    20         //关闭输入流,输出流
    21         reader.close();
    22         writer.close();
    23         
    24     }    
    View Code

    5.BufferedReader和BufferedWriter

    示例1:

     1 public void testBufferedReaerAndBufferedWriter() throws IOException
     2     {
     3         //1.新建缓冲输入流,缓冲输出流
     4         Reader reader=new FileReader("abc.txt");
     5         //BufferedReader(Reader in):BufferedReader对象需要通道一个Reader对象创建
     6         BufferedReader bufferedReader=new BufferedReader(reader);
     7         
     8         Writer writer=new FileWriter("abc4.txt");
     9         BufferedWriter bufferedWriter=new BufferedWriter(writer);
    10         //2.利用readLine()方法读取文件的中一行,并写入输出文件中,直至文件结束。
    11         String str=null;
    12         int i=0;
    13         while( (str=bufferedReader.readLine()) != null)
    14         {
    15             //注意:readLine()读取每一行的字符内容不包括换行符,所以使用该方法要记得手动加换行符
    16             if(i!=0)
    17             {
    18                 writer.write("
    ");
    19             }
    20             writer.write(str);
    21             i++;
    22         }
    23         
    24         //3.关闭缓冲输入流,缓冲输出流。直接关闭包装类,函数内部自动关闭节点流
    25         bufferedReader.close();
    26         bufferedWriter.close();
    27     }
    View Code

    6.BufferedInputStream和BufferedOutputStream

    示例1:

     1 public void testBufferedInputStreamAndBufferedOutputStream() throws IOException
     2     {
     3         InputStream in=new FileInputStream("abc.txt");
     4         BufferedInputStream bufferedInputStream=new BufferedInputStream(in);
     5         
     6         OutputStream out=new FileOutputStream("abc5.txt");
     7         BufferedOutputStream bufferedOutputStream=new BufferedOutputStream(out);
     8         
     9         byte[] buffer=new byte[10];
    10         int len=0;
    11         while( (len=bufferedInputStream.read(buffer))!=-1)
    12         {
    13             bufferedOutputStream.write(buffer, 0, len);
    14         }
    15         
    16         bufferedInputStream.close();
    17         bufferedOutputStream.close();
    18     }
    View Code

    7.InputStreamReader和InputStreamWriter 转换流

    InputStreamReader:将输入字节流转换为字符流

    InputStreamWriter:将输出字节流转换为输出字符流

    8.RandomAcessFile

    RandomAcessFile类既可读又可写。RandomAcessFile支持随机访问的模式,程序可以通过文件指针跳到任意位置读写。所以如果需要处理比较复杂的文件操作时,可以使用该类比较方便

    是独立于其他IO流的,直接继承于Object类。

    示例1:

     1     /*
     2      * 在文件的第二行添加It is a sunny day!
     3     */
     4     @Test
     5     public void testRandomAccess() throws IOException
     6     {
     7         //1.RandomAccessFile(File file, String mode),创建从中读取和向其中写入(可选)的随机访问文件流
     8         RandomAccessFile randomAccessFile=new RandomAccessFile("abc.txt", "rw");
     9         
    10         //2.读取文件内容,添加新行
    11         //先读取第一行,然后将后面部分读入到一个数组中,添加新行,再把原文件第二行至末尾放入新文件中(只适用于文件不大的情况)
    12         //2.1 先读取第一行
    13         String line=randomAccessFile.readLine();
    14         byte[] buffer=new byte[1024];
    15         //2.2 将第一行后面的内容读取到数组中
    16         randomAccessFile.read(buffer);
    17         //2.3 将文件指针重新定位到文件第一行后面
    18         randomAccessFile.seek(line.length());
    19         //2.4 写入新内容和剩下部分
    20         randomAccessFile.writeBytes("
    It is a sunny day
    ");
    21         randomAccessFile.write(buffer);
    22         
    23         //3.关闭文件流
    24         randomAccessFile.close();        
    25     }
    View Code
  • 相关阅读:
    [转]C#中抽象类和接口的区别
    [转]OO设计原则总结
    [转]MVC3快速搭建Web应用(三)实例篇
    原生内存(堆外内存)
    使用SAX解析XML实例根据属性查找
    Cannot forward after response has been committed问题解决及分析
    dubbo服务化实施整理
    bean:write 标签不能显示出 换行符的解决方案
    Dubbo原理解析监控
    thread之1:java与线程
  • 原文地址:https://www.cnblogs.com/ITyannic/p/8075985.html
Copyright © 2020-2023  润新知