流(Stream),文件(File),IO

根据处理的数据类型不同,可以分为:字符流 字节流

字符流:Reader       Write

字节流:InputStream    OutputStream

字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。

根据数据流方向不同,可以分为:输入流输出流 

根据功能不同分为:节点流处理流

FileReader是Reader子类,文件字符流的读取写个例子:

import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class Test3 {
    public static void main(String[] args){
        //1.txt中的内容为A
      File file=new File("d:/xbj/1.txt");
      try(FileReader fr=new FileReader(file)){
         char[] cll=new char[(int)file.length()];
         fr.read(cll);
          for (char c:cll
               ) {
              System.out.println(c);
          }
      }
      catch(IOException e){
          e.printStackTrace();
      }
    }
}

读取结果:

A

举例:字符流写入:

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class Test3 {
    public static void main(String[] args){
    File file =new File("d:/xbj/1.txt");
    try(FileWriter fw=new FileWriter(file)){
        //用字符流的形式把字符串写进文档
        String txt="字符流写入";
        char[] cs=txt.toCharArray();
        fw.write(cs);
    }
    catch(IOException e){
     e.printStackTrace();
    }
    }
}

字节流读取文件内容:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class TestStream {
    public static void main(String[] args) {
      try{
          File file =new File("d:/xbj/2.txt");
          //字节流输入来读取文件内容
          FileInputStream fis=new FileInputStream(file);
          //字节数组
          byte[] all=new byte[(int)file.length()];
          fis.read(all);
          for (byte b:all
               ) {
              System.out.println(b);
          }
          //一定要记得关闭
          fis.close();
      }
       catch(IOException e){
          e.printStackTrace();
       }
    }
}

文件内容为AB,读取的是ASCII码

扫描二维码关注公众号,回复: 2504253 查看本文章
65
66

字节流向文档写入内容:

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class TestStream {
    public static void main(String[] args) {
      try{
          File file =new File("d:/xbj/2.txt");
          //字节流写入
          FileOutputStream fos=new FileOutputStream(file);
          byte[] all={98,99};
          fos.write(all);
          for (byte b:all
               ) {
              System.out.println(b);
          }
          fos.close();
      }
       catch(IOException e){
          e.printStackTrace();
       }
    }
}

缓存流读取数据:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class TestStream {
    public static void main(String[] args) {
      File file=new File("d:/xbj/2.txt");
      //创建文件字符流
        //缓存流必须建立在一个存在的流上
      try( FileReader fr=new FileReader(file);
           BufferedReader bfr=new BufferedReader(fr)){
         while(true){
             String line=bfr.readLine();
             if (null==line)
                 break;
             System.out.println(line);
         }


      }
      catch(IOException e){
          e.printStackTrace();
      }
    }
}

缓存流写入

import java.io.*;

public class TestStream {
    public static void main(String[] args) {
        File file=new File("d:/xbj/2.txt");
        try(
                FileWriter fw=new FileWriter(file);
                PrintWriter bfw=new PrintWriter(fw);
                ){
                      bfw.println("sdfsfd");
                      bfw.println("czxvf");
        }catch(IOException e){
              e.printStackTrace();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qingxu1234/article/details/81206774