文件系统
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();