Java 文件系统与IO流

文件系统

 java.io中的File类,用于处理文件。

import java.io.File;  // 导入File类
File myFile= new File("filepath.txt"); // 指定文件名, win为"path\\filename"", linux是"path/filename"

File包括了许多常用方法如exists(), canRead(), mkdir(), createNewFile(), delete(), ...而一般来说对于文件的操作最好放在try...catch...内以便抛出IOException。

通过File可以得到文件的信息并在之后的IO中对文件内容进行操作

Java IO

参考自https://www.jianshu.com/p/e591ca6642e9

 数据在两设备之间的传输称为流,流的本质是数据传输,根据数据传输的特性将流抽象为各种类,方便进行更直观的数据操作。

流分为两类,字节流和字符流/输入输出流。

字符流:以字符为单位,只能处理纯文本的数据。本质其实就是基于字节流读取时,去查了指定的码表

字节流:以字节(8bit)为单位,能处理所有类型的数据(如图片、.avi等)

CharReader、StringReader 是两种基本的介质流,它们分别将Char 数组、String中读取数据。PipedReader 是从与其它线程共用的管道中读取数据。

CharArrayWriter、StringWriter 是两种基本的介质流,它们分别向Char 数组、String 中写入数据。PipedWriter 是向与其它线程共用的管道中写入数据。

但是字符流貌似也不咋用,就不写例子了。

输入流:InputStream,把数据从File里头拿到类里头去

输出流:OutputStream,把数据从类里头拿出去

ByteArrayInputStream、StringBufferInputStream、FileInputStream 是三种基本的介质流,它们分别从Byte 数组、StringBuffer、和本地文件中读取数据。PipedInputStream是从与其它线程共用的管道中读取数据。
ByteArrayOutputStream、FileOutputStream 是两种基本的介质流,它们分别向Byte 数组、和本地文件中写入数据。PipedOutputStream 是向与其它线程共用的管道中写入数据,
图中虚线一般对应使用
//FileInputStream&FileOutputStream流传文件
InputStream in = new FileInputStream("d:\\1.txt");
//写入相应的文件
OutputStream out = new FileOutputStream("d:\\2.txt");
//读取数据
//一次性取多少字节
byte[] bytes = new byte[2048];
//接受读取的内容(n就代表的相关数据,只不过是数字的形式)
int n = -1;
//循环取出数据
while ((n = in.read(bytes,0,bytes.length)) != -1) {
    //转换成字符串
    String str = new String(bytes,0,n,"GBK"); #这里可以实现字节到字符串的转换,比较实用
    System.out.println(str);
    //写入相关文件
    out.write(bytes, 0, n);
}
//关闭流
in.close();
out.close();
        //BufferedInputStream BufferedOutputStream 输入输出流
        //读取文件(缓存字节流)
        BufferedInputStream in = new BufferedInputStream(new         
        FileInputStream("d:\\1.txt"));
        //写入相应的文件
        BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("d:\\2.txt"));
        //读取数据
        //一次性取多少字节
        byte[] bytes = new byte[2048];
        //接受读取的内容(n就代表的相关数据,只不过是数字的形式)
        int n = -1;
        //循环取出数据
        while ((n = in.read(bytes,0,bytes.length)) != -1) {
            //转换成字符串
            String str = new String(bytes,0,n,"GBK");
            System.out.println(str);
            //写入相关文件
            out.write(bytes, 0, n);
        }
        //清楚缓存
        out.flush();
        //关闭流
        in.close();
        out.close();

猜你喜欢

转载自www.cnblogs.com/tillnight1996/p/12322754.html