【Java IO】IO介绍
传统IO模型——流模型
?
Java IO分类
?
文件输入/输出流
FileInputStream/FileReader
FileOutputStream/FileWriter
示例:文件拷贝(字节流)
public void doCopy(){FileInputStream fis = null;FileOutputStream fos = null;try{fis = new FileInputStream(sourceFile);fos = new FileOutputStream(newFile);byte[] buffer = new byte[1024];int hasRead = 0;while((hasRead=fis.read(buffer))>0){fos.write(buffer,0,hasRead);}}catch(IOException e){}finally{if(fis != null)fis.close();if(fos != null)fos.close();}}文件拷贝(字符流)
pubilc void doCopy(){FileReader fr = null;FileWriter fw = null;try{fr = new FileReader(sourceFile);fw = new FileWriter(newFile);char[] buffer = new char[32];int hasRead = 0;while((hasRead = fr.read(buffer)>0)){fw.write(buffer,0,hasRead);}}catch(){}finally{}if(fr != null)fr.close();if(fw != null)fw.close();}??
包装流:
隐藏底层设备上的节点流的差别。对外提供更加方便的输入/输出方法。
如:利用PrintStream输出字符串和对象——PrintStream.println(String) ,PrintStream.println(Object);
//节点流FileOutputStream fos = new FileOutputStream(file);//节点流 --> 包装流PrintStream ps = new PrintStream(fos);ps.println(string);ps.println(object);?
BufferedReader.readLine()方便读取一行内容;
//InputStream --> ReaderInputStreamReader reader = new InputStreamReader(System.in);//节点流 --> 包装流BufferedReader br = new BufferedReader(reader);String buffer;while((buffer = br.readLine()) != null){//}?注意:如果执行输入/输出的内容是文本内容,则考虑使用字符流;
如果是二进制内容,则考虑使用字节流。
?
转换流(InputStreamReader/OutputStreamWriter):
字节流 --> 字符流
InputStreamReader reader = new InputStreamReader(InputStream);
OutputStreamWriter writer = new OutputStreamWriter(OutputStream);
?
RandomAccessFile
?
?