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),指明了源

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/48769523https://blog.csdn.net/wymrdjm/article/details/78758986https://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/79311629https://blog.csdn.net/tanhongwei1994/article/details/88874158

java基础知识
原文地址:https://www.cnblogs.com/zhihongShee/p/14837299.html