说明
借用这篇文章,帮助自己复习IO流的知识,巩固基础,并一窥各大牛的技术成果;最终的目的是聊熟于胸,然后快速应用.
什么是IO流
这里借用百度百科的解释:
流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出
为什么用IO流
我找了很多解释,但是我感觉可能我的知识水平没有达到那种水平,理解不了;我的理解呢,就是,我们知道,在前端,是不允许操作本地数据的,不然人家通过一个网页就能控制你电脑的数据了,那还搞屁;一般我们操作本地的文件,音频等都是通过后台(java,php等)来搞的,而这些文件一般都很大,那么怎么办呢,所以我们就会用到IO流来统一处理.
字节流:二进制,可以一切文件,包括纯文本,doc 音频 视频等等
字符流:文本文件,只能处理纯文本
其实在找这一块的知识时,我发现老外,一般都是从为什么开始,而我们一般都是直接开始用了,完全不明白为什么用,只知道怎么用;这就是差距啊;是社会性的.不是一两个人的问题.
递进式了解
为了循序渐进的学习,我翻看了很多博客,这里推荐一篇博客,写的很好,方便理解:
https://blog.youkuaiyun.com/sinat_33921105/article/details/81081452
这个作者很强啊,我感觉我不用写了,看他的就行了;然后我这里稍微总结下:
抽象一些小工具用用
这里要特别注意,你去调试的时候,由于程序运行特别快,你调试的时候程序可能已经运行到最后了
1 读取文本txt
public static class tools {
public static String read_txt(String filepath) throws IOException {
File file = new File(filepath);
if (!file.exists()) {
return "文件不存在";
} else {
FileInputStream fileInputStream = new FileInputStream(file);
//获取txt的长度
int length = fileInputStream.available();
byte[] bytes = new byte[length];
fileInputStream.read(bytes);
String rs = new String(bytes);
return rs;
}
}
}
这里测试了个100M的txt,就是那种电脑打开都费劲的…然而这个程序读起来还挺快,可以用一下,读txt一般没问题感觉;
实际处理问题
看了几篇博文,大体算是了解了I/O,心里想着,就没有轮子能用吗;发现好像还真没有…然后又去springboot里面找了找,哎,注解看的脑袋都是大的,下面呕心总结一番(前端的苦逼)
java对象的序列化和反序列化
用轮子就行了;;;推荐阿里巴巴的fastjson
流的序列化和反序列化
说实话,没找到什么轮子…自己造呗
本文介绍了Java IO流,包括其定义和使用原因,字节流可处理一切文件,字符流只能处理纯文本。还推荐了学习博客,展示了读取大文本txt的程序,最后探讨了Java对象和流的序列化与反序列化,推荐用fastjson处理对象序列化,流序列化暂无合适轮子需自制。
802

被折叠的 条评论
为什么被折叠?



