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();
        }

    }

要记得关闭流

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 五、IO流 1、IO流概述 (1)用来处理设备(硬盘,控制台,内存)间的数据。(2)java中对数据的操作都是通过...
    佘大将军阅读 529评论 0 0
  • 引言:Java的IO是Java的重中之重,之前一直对各种IO流了解的模模糊糊,今天花了一天时间将所有常用的IO流均...
    cp_insist阅读 633评论 1 7
  • tags:io categories:总结 date: 2017-03-28 22:49:50 不仅仅在JAVA领...
    行径行阅读 2,218评论 0 3
  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,416评论 0 4
  • 内置类属性 内置类属性:python中每个类都拥有内置的类属性_name__doc__dict__module__...
    慢节拍_2709阅读 305评论 0 4