File Api
语句 | 作用 |
---|
1.IO流(输入流、输出流)
字节流、字符流
- 1.字节流
InputStream、OutputStream
- InputStream抽象了应用程序读取数据的方式
- OutputStream抽象了应用程序写入数据的方式
- 2.EOF
EOF = End 读到-1就读到结尾 3.输入流的基本方法
int b = in.read();//读取一个字节无符号填充到int低八位.-1是EOF in.read(byte[] buf); in.read(byte[] buf,int start,int size);
4.输出流基本方法
out.write(int b);//写入一个byte到流,b的低8位 out.write(byte[] buf)将buf字节数组都写入到流 out.write(byte[] buf,int start,int size);
5.FileInputStream&FileOutputStream
- 文件流的输入流与输出流
if (!srcFile.exists()) throw new IllegalAccessException("文件"+srcFile+"不存在"); if (!srcFile.isFile()) throw new IllegalAccessException(srcFile+"不是文件"); FileInputStream fis = new FileInputStream(srcFile); FileOutputStream fos = new FileOutputStream(destFile,true);//如果文件,则追加在文件内容后面 int b ; byte[] buf = new byte[8*1024]; while ((b = fis.read(buf))!=-1){ fos.write(buf,0,b); fos.flush(); } fis.close(); fos.close();
- 文件流的输入流与输出流
- **6.DataOutputStream/DataInputStream
- 对”流”功能的扩展,可以更加方便的读取int.long,字符等类型数据
- DataOutputStream writeInt()/writeDouble()/writeUTF();
- **7.BufferedInputStream&BufferedOutputStream
- 这两个流类位IO提供了带缓冲区的操作,一般打开文件进行写入或去读操作时。都会加入缓冲,这种流模式提高了IO的性能 .(注意,bos.flush() )
- 1.字节流
2.字符流
- 字符的处理,一次处理一个字符
- 字符的底层任然是基本的字节序列
- 字符流的基本实现
- 1.InputStreamReader 完成byte流解析为char流,按照编码解析
- 2.OutputStreamWriter提高char流到byte流,按照编码处理
- 3.FileReader&FileWriter
4.BufferedReader&BufferedWriter
- 一次读一行ReadLine&一次写一行
public static void copyFileRW(String srcFile,String destFile)throws Exception{ BufferedWriter bw = new BufferedWriter( new OutputStreamWriter( new FileOutputStream(destFile) ) ); BufferedReader br = new BufferedReader( new InputStreamReader( new FileInputStream(srcFile) ) ); String line ; while ((line = br.readLine())!=null){ bw.write(line); bw.newLine();//换行 bw.flush();//刷新 } br.close(); bw.close(); }
对象的序列化、反序列化
- 对象序列是将Object转换成byte序列,反之叫反序列化
- 序列化流(ObjectOutputStream),是过滤—writeObject,反序列化流(ObjectInputStream)—readObject
- 序列化接口必须实现(Serializable) 对象必须进行序列化,否则会出现异常
public static void ObjectFile(String srcfile,String destfile) throws Exception{
ObjectOutputStream oos = new ObjectOutputStream(
new FileOutputStream(srcfile));
Student student = new Student(1001,"家伙",20);
oos.writeObject(student);
oos.flush();
oos.close();
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(destfile));
Student stu = (Student) ois.readObject();
ois.close();
}