No Bug 2022-08-06 08:42:12 阅读数:719
++ 记得操作后关闭流 不然浪费资源++
++任何文件底层都是字节 只要文件格式、编码一样都可以拷贝 转移++
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
FileWriterReader 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