IO流以及IO流常用类

1. /相对路径,相对于工作目录,如果在eclipse中,就是项目目录
2.InputStream和OutputStream只能read和write出数字啦,byte啦等基本类型,方便存储
因为所有数据在计算机中都是以数字存放滴
所以我们用FileInputStream(inputStream的子类)将硬盘上的数据读到内存的时候,用一个byte数组读取
对应的”字节“,然后解码为正常字符
反之,将内存的东西写到硬盘,就要先得到其字节数组,然后os.write(data);//data是字符串的字节数组
1k=1024字节
输入输出流结合:
建立输入流,输出流
1.建立 byte数组//data
2.read(data)//读到数组中
while( len=in.read(data)!=-1){//因为若没有数据了,返回值为-1,要不然返回所就是data的长度
3.
write(data(要写入的字节数据),0,len);//从0到len的长度
将读到的文件分割
FileOutputStream os=new FileOutputStream("path+name"+(i++)+".txt");
os.write(data,0,len);

}


4.在try中别关闭流,在finally中关闭
try (FileInputStream fis = new FileInputStream(f))
上边是新的关闭方法,JDK自动关闭

5. 字符流
Reader字符输入流
Writer字符输出流
专门用于字符的形式读取和写入数据
FileReader。FileWriter是他俩的子类

遇见中文问题见:https://how2j.cn/k/io/io-encoding/695.html#nowhere
现在先不看了
6.
就好比吃饭,不用缓存就是每吃一口都到锅里去铲。用缓存就是先把饭盛到碗里,碗里的吃完了,再到锅里去铲
缓存流在写入数据的时候,会先把数据写入到缓存区,直到缓存区达到一定的量,才把这些数据,一起写入到硬盘中去

缓存流必须建立在一个流的基础上
BufferReader,PrintWriter
有的时候,需要立即把数据写入到硬盘,而不是等缓存满了才写出去。 这时候就需要用到flush

 

7.数据流:每个数据流中都要包含上文件(输入||输出)流
要用DataInputStream 读取一个文件,这个文件必须是由DataOutputStream 写出的,否则会出现EOFException
因为DataOutputStream 在写出的时候会做一些特殊标记,只有DataInputStream 才能成功的读取。

 

8.对象流:对象流指的是可以直接把一个对象以流的形式传输给其他的介质,比如硬盘
一个对象以流的形式进行传输,叫做序列化。 该对象所对应的类,必须是实现Serializable接口

 

9.控制台输入的方法:
(1)InputStream is = System.in; int x=is.read(); 需要转码啥的 墨迹,不推荐
(2) Scanner sc=new Scanner(system.in);
int x=sc.nextInt();
(3)BufferedReader sc=new BufferedReader(new InputStreamReader(System.in));
int x=sc.read();//这个最好是文件操作,服务器和客户端之间交换数据的时候使用


10.InputStreamReader类是从字节流到字符流的桥接器


11 BufferoutputStream字符流

 

posted @ 2020-03-09 22:09  why666  阅读(439)  评论(0)    收藏  举报