读书人

【Java IO】IO引见

发布时间: 2012-12-18 12:43:41 作者: rapoo

【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

?

?

读书人网 >编程

热点推荐