因为字节流和字符流的区分,有些功能类似的流的写法相似,这里总结一下常用的流的写法,以免忘记。如后续有学习或用到新的流,再增加或修改。
因为这里只整理流的用法,具体读写方法read,write等略过。
这里统一使用一个文件参数来代替文件参数
String fileName = "C:\\Users\\CC\\Desktop\\test111.txt";
读写文件
字节流读取文件
// InputStream in = new FileInputStream(new File(fileName));
// BufferedInputStream bi = new BufferedInputStream(in);
BufferedInputStream bi = new BufferedInputStream(new FileInputStream(new File(fileName)));
字符流读取文件
BufferedReader br = new BufferedReader(new FileReader(new File(fileName)));
字节流输出文件
BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream(new File(fileName)));
字符流输出文件
BufferedWriter bw = new BufferedWriter(new FileWriter(new File(fileName)));
字符流字节流转换
InputStreamReader OutputStreamWriter
BufferedReader br1 = new BufferedReader(new InputStreamReader(new FileInputStream(new File(fileName))));
BufferedWriter bw1 = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(fileName))));
其他功能总结 – 吧需要用的功能放在最外面
读数字 DataInputStream(in) – 仅有字节流
DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream(new File(fileName))));
DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(new File(fileName))));
内存 – 字节流仅有输入
String s = "fadfadfadfkajgaowerjtwnjerfanjgfkasjdgfklasnjdfkljasdfkl";
StringBufferInputStream sbis = new StringBufferInputStream(s);
StringReader sr = new StringReader(s);
StringWriter sw = new StringWriter();
跟踪行号 – 仅有输入
LineNumberInputStream lnis = new LineNumberInputStream(new BufferedInputStream(new FileInputStream(new File(fileName))));
LineNumberReader lnr = new LineNumberReader(new BufferedReader(new FileReader(new File(fileName))));
压缩文件 – 仅有字节流,一般文件中有字符,所以可以用转换流
GZIP单个文件压缩
BufferedReader brGZIP = new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream("test.gz"))));
BufferedWriter bwGZIP = new BufferedWriter(new OutputStreamWriter(new GZIPOutputStream(new FileOutputStream("test.gz"))));
Zip支持多个文件压缩(校验和 略)
ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream("test.zip")));
ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream("test.zip")));
特殊地
随机访问文件 – 读写一体,使用同一个类
RandomAccessFile raf = new RandomAccessFile(new File(fileName),"rw");
RandomAccessFile rafR = new RandomAccessFile(new File(fileName),"r");
流内容分割
StreamTokenizer将InputStream分隔成一系列记号
StreamTokenizer st = new StreamTokenizer(new FileInputStream(new File(fileName)));
StreamTokenizer st1 = new StreamTokenizer(new FileReader(new File(fileName)));
StringTokenizer将String分割成一系列标记,操作简单,复杂的请用上面的StreamTokenizer
StringTokenizer strt = new StringTokenizer(s);
格式化输出 – 仅输出
PrintStream ps = new PrintStream(new FileOutputStream(new File(fileName)));
PrintWriter pw = new PrintWriter(new FileWriter(new File(fileName)));
readLine方法
请使用BufferedReader 或 Scanner 而不是 DataInputStream