`
Tonyguxu
  • 浏览: 271675 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【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 --> Reader
InputStreamReader 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

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics