JAVA流

IO 流按照数据流向分可以分为输入流和输出流;按照处理的数据类型来分可以分为字符流和字节流。字节流通常用来操作二进制文件,一些数字和字母都是占一个字节,可以使用字节流来操作,但是汉字占两个字节,不能使用字节流来操作。字符流可以操作16位,所以对于文本文件常用字符流操作。

File 类

该类提供了对文件操作的一些功能

public static void classFile(){
        File file = new File("test.txt");
        System.out.println(file.getName());
        file.delete();
}
File类操作

通过 File 类来创建文件

public static void createFile(){
        File file = new File("test.txt");
        if(!file.exists()){
            try{
                file.createNewFile();
            }
            catch (IOException e){
               e.printStackTrace();
            }
        }
        else {
            System.out.println("文件已存在");
        }
    }

如果本地已有该文件,createNewFile() 不会创建新的文件,也不会覆盖。
mkdir()方法可以创建文件夹
mkdirs()方法可以创建多级文件夹

流操作

字节流

读取文件

 public static void readFile(){
        File file = new File("test.txt");
        try {
            FileInputStream fileInputStream = new FileInputStream(file);
            int i = fileInputStream.read();
            while(i > 0){
                System.out.print((char)i);
                i = fileInputStream.read();
            }
        }catch (FileNotFoundException e){
            e.printStackTrace();
        }
        catch (IOException e){
            e.printStackTrace();
        }
    }

read()方法返回 -1 的话,说明文件读取完毕。

写入文件

 public static void writeFile() {
        File file = new File("test.txt");
        try{
            FileOutputStream outputStream = new FileOutputStream(file,true);
            byte[] content = {'I',' ','w','i','l','l'};
            outputStream.write(content);
        }catch (FileNotFoundException e){
            e.printStackTrace();
        }
        catch (IOException e){
            e.printStackTrace();
        }
    }

true为追加,false为覆盖。

FileOutputStream 和FileInputStream 分别是 OutputStream 和 InputStream 接口的实现类。

字符流

字符流的接口为 Reader 和 Writer。

输入流
Reader 比较重要的实现类有:
(1) InputStreamReader
InputStreamReader 的参数是 char 类型,char 为两个字节,一个汉字占据两个字节,所以 InputStreamReader 能读取汉字。

public static void Reader_InputStreamReader()  {
        File file = new File("test.txt");

        try {
            FileInputStream fileInputStream = new FileInputStream(file);
            InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
            char[] c = new char[64];
            int read = inputStreamReader.read(c);
            System.out.println(new String(c));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

(2)FileReader

  public static void Reader_FileReader(){
        File file = new File("test.txt");
        try {
            FileReader fileReader = new FileReader(file);
            char[] c = new char[64];
            fileReader.read(c);
            System.out.println(c);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

(3)BufferedReader
BufferedReader 是缓冲流,对 Reader 做缓冲,所以使用 BufferedReader 一定会用到 Reader。

public static void Reader_BufferedReader(){
        File file = new File("test.txt");
        try {
            FileInputStream fileInputStream = new FileInputStream(file);
            InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String line = null;
            while((line = bufferedReader.readLine()) != null)
                System.out.println(line);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

BufferedReader 可以进行整行读取,所以可以保持文本的格式不乱。

输出流

 public static void writer(){
        File file = new File("/Users/s.jhuang/Desktop/JavaStudy/test.txt");
        try {
            FileOutputStream fileOutputStream = new FileOutputStream(file,true);
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream);
            BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);
            bufferedWriter.write("要努力学习");
            bufferedWriter.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

要记得关闭流

你可能感兴趣的:(JAVA流)