IO流常用方式总结

因为字节流和字符流的区分,有些功能类似的流的写法相似,这里总结一下常用的流的写法,以免忘记。如后续有学习或用到新的流,再增加或修改。
因为这里只整理流的用法,具体读写方法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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值