java 流
(1)java inputStream表示从外流入到程序;
一般以程序为参考,如果数据的流向是程序至设备,我们成为输出流,反之我们称为输入流;
InputStream输入类,首先需要读取的内容转化成输入流,再从它那里进行读取,先关联源;之后过程中关联目的,这样形成了流;
把要读取的内容输入到输入流,再从输入流进行读取,所以是read()
OutputStream输出类,首先需要与写入的目的地相关联,然后通过它进行写入,首先关联的是流的目的;之后的过程中再关联源,这样形成了流
把要输出的东西通过输出流输出到目的地,所以是write()
下面的例子就是将f中的内容读至byte数组中,在实例化的时候,先关联的是f,也就是读取的源,然后input.read(b),关联了目的,也就是数组b
File f = new File("d:"+File.separator+"test.txt"); InputStream input = new FileInputStream(f); byte b[] = new byte[1024]; //读入数组b中 int len = input.read(b); input.close(); System.out.println(new String(b,0,len));
先关联的是目的,文件f,然后out.write(b),指明了源
1 2 3 4 5 6 | File f = new File( "d:" +File.separator+ "test.txt" ); OutputStream out = new FileOutputStream(f); String str = "hello,world" ; byte b[] = str.getBytes(); out.write(b); out.close(); |
这里FileInputStream抑或后面的FileOutputStream,
我们实际代码中,可以用临时ByteArrayOutputStream作为源或目的;
即
ByteArrayOutputStream bos = new ByteArrayOutputStream(); OutputStream out = new FileOutputSream(bos); out.toByteArray()
这样的我们可以拿到输出流的字节数组,字节数组一般作为代码里面的中转站。
经典的文件读取方式:https://blog.csdn.net/qq_21989939/article/details/48769523、https://blog.csdn.net/wymrdjm/article/details/78758986、https://juejin.cn/post/6866929917083418637#heading-5
以及最暴力的读取方式,直接读取所有,一把读所有字节和一行一行读取:https://www.cnblogs.com/0201zcr/p/5009975.html
相比于暴力从inputSteam流中直接读取所有的字节,一种更为优雅的方式,借助缓冲区输入流BufferedInputStream(创建BufferedInputStream时,我们会通过它的构造函数指定某个输入流为参数。
BufferedInputStream会将该输入流数据分批读取,每次读取一部分到缓冲中;操作完缓冲中的这部分数据之后,再从输入流中读取下一部分的数据。):https://www.cnblogs.com/firstdream/p/8668006.html
常用的byte数组与String、inputStream、File之间的转换:https://blog.csdn.net/qq_35893120/article/details/79311629、https://blog.csdn.net/tanhongwei1994/article/details/88874158
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!