java语言基础 I/O流

No Bug 2022-08-06 08:42:12 阅读数:719

javaCSDN基础语言technology-development

I/O流

++ 记得操作后关闭流 不然浪费资源++

字节流

++任何文件底层都是字节 只要文件格式、编码一样都可以拷贝 转移++

输入流

InputStream
FileInputStream
++ 读取字节流可能出现乱码++
public int read( ) 一次读取一个字节并返回 没有返回-1

public int read(byte[ ] buffer ) 一次读取一个字节数组并返回读取个数 读取到的字节存在buffer 没有返回-1

++ 指定读取的长度也不会乱码 ++
new String(buffer) 可以把字节转化为字符
new String(buffer,0,len) 把字节数组的 0到len 转化为字符

++ 一次读完所有字节不会出现乱码 ++
public byte[ ] readAllBytes( ) 一次读完所有字节

输出流

OutputStream
FileOutputStream

++ 写数据必须刷新 os.flush( ) 或者关闭流 close( )++
write( byte[ ] )

++ 输出设置append为true追加在原文件 不会覆盖++
OutputStream os = new FileOutputStream("url",true);

字符流

输入流

Reader
FileReader

输出流

++ 换行 /r/n++
Writer
FileWriter
Reader reader = new FileReader("src/test.txt"); Writer writer = new FileWriter(“src/new.txt”);
char[] chars = new char[1024];
int len = 0; while ((len = reader.read(chars)) != -1) {
writer.write(chars,0,len);
System.out.println(new String(chars,0,len)); }
reader.close(); writer.close();
``

++ FileWriter(“src/new.txt”,true); 表示不覆盖 往后叠加++

缓冲流

++包装原始字节流++
++自带8K缓冲区 提高读写性能++
++一般一次操作1KB byte[] bs = new byte[1024]++

字符缓冲流

Reader reader = new BufferedReader(new FileReader("src/new.txt"));
`` Writer writer = new BufferedWriter(new FileWriter(“src/new1.txt”));
readLine( ) 按行读 返回读取一行的字符
newLine( ) 换行

解决读取不同编码乱码问题
InputStreamReader(InputStream is,String charset)
`OutputStreamWriter(OutputStreamWriter os,String charset)

字节缓冲流类似

对象序列化、反序列化

对象输出
ObjectOutPutStream
++高级流 需要包装低级流++
++使用对象输出流包装字节输出流++
`` ObjectOutputStream oos =new ObjectOutputStream(new FileOutputStream(“url”))
++输出对象时 对象类需要实现Serializable接口++

版权声明:本文为[No Bug]所创,转载请带上原文链接,感谢。 https://blog.csdn.net/qq_61672548/article/details/126184646