IO流-字符输出流、字节数组流(七)

IO流-字符输出流、字节数组流(七)

  1. 字符输出流

    在java的IO流中专门提供了用于字符输出的流对象PrintWirter.该对象具有自动刷新缓冲字符输出流,特点是可以按行写出字符,并且可通过println();方法试下你自动换行。

    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    
    public class LineNumberDemo3 {
          
          
        public static void main(String[] args) {
          
          
            BufferedReader br=null;
            PrintWriter pw=null;
            try {
          
          
                //让我们明白一个道理:输入流和输出流不一定是成对出现的,你输入流可以是处理流,输出流可以是节点流
                //输入流是就考虑输入流的过程,至于这个内容你要怎么输出到程序的外部,你自己来决定
                br=new BufferedReader(new InputStreamReader(new FileInputStream("d:/sxt.txt")));
                pw=new PrintWriter("d:/sxt4.txt");//PrintWriter直接是一个字符输出流,,且自带flush()刷新功能
                String temp="";
                int i=1;
                while ((temp=br.readLine())!=null){
          
          
                    pw.println(i+","+temp);
                    i++;
                }
    
            }catch (Exception e){
          
          
                e.printStackTrace();
            }finally {
          
          
                try {
          
          
                    if (br !=null){
          
          
                        br.close();
                    }
                    if (pw!=null){
          
          
                        pw.close();
                    }
    
                }catch (Exception e){
          
          
                    e.printStackTrace();
                }
            }
        }
    }
    
    
  2. 字节数组流

    ByteArrayInputStream和ByteArrayOutputStream经常用在需要流和数组之间的转换的情况!

    • 字节数组输入流

      说白了,FileInputStream是把文件当做数据源。ByteArrayInputStream则是把内存中的“字节数组对象”当做数据源。

      import java.io.ByteArrayInputStream;
      
      public class ByteArrayInputDemo {
              
              
          public static void main(String[] args) {
              
              
              byte[] arr="abcdefg".getBytes();
              ByteArrayInputStream bis=null;
              StringBuilder sb=new StringBuilder();
              try {
              
              
                  //该构造方法的参数是一个字节数组,这个字节数组就是数据源
                  bis=new ByteArrayInputStream(arr);
                  int temp=0;
                  while ((temp=bis.read())!=-1){
              
              
                      sb.append((char)temp);
                  }
                  System.out.println(sb.toString());
      
              }finally {
              
              
                  try {
              
              
      
                  }catch (Exception e){
              
              
                      e.printStackTrace();
                  }
              }
          }
      }
      
      
    • 字节数组输出流

      ByteArrayOutputStream流对象是将流中的数据写入到字节数组中。

      import java.io.ByteArrayOutputStream;
      
      public class ByteArrayOutputDemo {
              
              
          public static void main(String[] args) {
              
              
              ByteArrayOutputStream bos=null;
              try {
              
              
                  StringBuilder sb=new StringBuilder();
                  bos=new ByteArrayOutputStream();
                  bos.write('a');
                  bos.write('b');
                  bos.write('c');
                  byte[] arr=bos.toByteArray();//toByteArray()就是把字节数组输出流转换成字节数组的一个方法
                  for (int i=0;i<arr.length;i++){
              
              
                      sb.append((char) arr[i]);
                  }
                  System.out.println(sb.toString());
              }finally {
              
              
                  try {
              
              
                      if (bos!=null){
              
              
                          bos.close();
                      }
      
                  }catch (Exception e){
              
              
                      e.printStackTrace();
                  }
              }
          }
      }
      

猜你喜欢

转载自blog.csdn.net/Xun_independent/article/details/114897419
今日推荐