IOストリーム-文字出力ストリーム、バイト配列ストリーム(7)

IOストリーム-文字出力ストリーム、バイト配列ストリーム(7)

  1. 文字出力ストリーム

    Java IOストリームでは、文字出力用のストリームオブジェクトPrintWirterが特別に提供されています。このオブジェクトには、文字を1行に書き込むことを特徴とする自動リフレッシュバッファ文字出力ストリームがあり、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