Buffered
java.io.BufferedOutputStream
字节输出缓冲流
构造方法
public BufferedOutputStream(OutputStream out)
OutputStream out:字节输出流的超类 抽象类
可以传入其任意子类对象 FileOutputStream
方法
write(int b) 写一个字节
write(byte[] bytes) 写字节数组
write(byte[] bytes,int start ,int length) 写字节数组一部分
close() 关闭资源
java.io.BufferedInputStream
字节输入缓冲流
构造方法
public BufferedInputStream(InputStream in)
InputStream in:所有字节输入流的超类 抽象类
可以传入其任意子类对象 FileInputStream
方法
int read() 读一个字节
int read(byte[] bytes) 读一个字节数组
close() 关闭资源
java.io.BuffferedReader
字符输入缓冲流
构造方法
public BufferedReader(Reader r)
Reader r: 可以传入Reader的子类对象 FileReader
特有方法
String readLine() 读取一行记录 返回值为读取到的数据 如果没有数据 返回null值
注意:只读取换行符之前的数据 不读\r\n
java.util.BuffferedWriter
字符输出缓冲流
构造方法
public BufferedWrter(Writer w)
Writer w : 可以传入子类对象 FileWriter
bw.write("hello world");
bw.newLine();
bw.flush();
特有方法
void newLine() 写换行
GBK与UTF-8编码转换
java.io.InputStreamReader
可以使用Reader的read方法
构造方法
InputStreamReader(InputStream in) 使用平台默认编码
InputStreamReader(InputStream in, String charsetName) 指定编码
String charsetName:指定字符集 不区分大小写 不能乱写
Reader r = new InputStreamReader(new FileInputStream("d:\\work\\abc\\gbk.txt"),"gbk");
java.io.OutputStreamWriter
继承自Writer
构造方法
public OutputStreamWriter(OutputStream out)
public OutputStreamWriter(OutputStream out,String charsetName)
Writer w = new OutputStreamWriter(new FileOutputStream("d:\\work\\abc\\gbk.txt",true),"gbk");
将一个GBK文件 转换成一个UTF-8文件 编码转换
Reader r = new InputStreamReader(new FileInputStream("d:\\work\\abc\\gbk.txt"),"gbk");
Writer w = new OutputStreamWriter(new FileOutputStream("d:\\work\\abc\\utf.txt"),"utf-8");
序列化流
java.io.ObjectOutputStream
序列化流
构造方法
public ObjectOutputStream(OutputStream out)
方法
writeObject(Object obj) 写对象
Serializable
就是一个标记型接口 实现此接口 允许序列化 不实现 不允许
静态内容 不能序列化
transient:瞬态关键字 阻止成员序列化
java.io.ObjectInputStream
反序列化流
构造方法
public ObjectInputStream(InputStream in);
方法
Object readObject() 读对象
PrintStream
java.io.PrintWriter
字符打印流
public PrintWriter(String path)
public PrintWriter(File file)
public PrintWriter(OutputStream out)
public PrintWriter(Writer w)
特点
1.打印流只负责数据目的 不负责数据源
2.打印流中的方法 不抛IO异常
3.字符打印流可以开启自动刷新
前提条件
构造方法必须是流对象
public PrintWriter(OutputStream out,boolean autoFlush)
public PrintWriter(Writer w,boolean autoFlush)
自动刷新的方法 只针对 println printf format方法
IOUtils
InputStream in = new FileInputStream("day21\\test\\mm.jpg");
OutputStream out = new FileOutputStream("day21\\test\\mm2.jpg");
IOUtils.copy(in,out);
IOUtils.closeQuietly(out);
IOUtils.closeQuietly(in);
FileUtils
//读取文件
String s = FileUtils.readFileToString(new File("day21\\test\\1.txt"));
//向文件中写字符串
FileUtils.writeStringToFile(new File("day21\\test\\3.txt"),s);
//复制文件
FileUtils.copyFile(new File("day21\\test\\mm.jpg"),new File("day21\\test\\mm3.jpg"));
//复制文件夹 递归复制多级
File srcDir = new File("d:\\tk");
File destDir = new File("d:\\work\\abc");
FileUtils.copyDirectoryToDirectory(srcDir,destDir);