ダークホースプログラマー_JAvaはBufferedReaderでreadLineがファイルをコピーする際に存在する問題と改善方法について.
3183 ワード
--------androidトレーニング、javaトレーニング、ご交流をお待ちしております!--------
,
, 。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/*
* java 。
*/
public class BufferedTest {
public static void main(String[] args) {
BufferedWriter bufw = null ;
BufferedReader bufr = null ;
try{ //
bufw = new BufferedWriter(new FileWriter("G:\\Stu_copy.java"));
bufr = new BufferedReader(new FileReader("G:\\Stu.java"));
String line = null ;
while((line=bufr.readLine())!=null){
bufw.write(line);
bufw.newLine(); // , 。
bufw.flush();
}
}catch(IOException e){}
finally{
try{
if(bufw!=null)
bufw.close();
}catch(IOException e){}
try{
if(bufr!=null)
bufr.close();
}catch(IOException e){}
}
}
}
, readLine , 。
BufferedReader.
package com.test;
import java.io.FileReader;
import java.io.IOException;
class MyBufferedReader {
private FileReader fr ;
private boolean flag =true ; // , 。
MyBufferedReader(FileReader fr){
this.fr = fr ;
}
public String myReadLine()throws IOException{
StringBuilder sb = new StringBuilder();
int len = 0 ;
while((len=fr.read())!=-1){
if(len=='\r')
continue;
if(len=='
')
return sb.toString();
else{
flag=false; // , ,
sb.append((char)len);
}
}
if(sb.length()!= 0){ //
flag=true;
return sb.toString();
}
if(!flag){ // , , 。
flag=true;
return "\r
" ;
}
return null;
}
public void myClose()throws IOException{
fr.close();
}
}
,
package com.test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/*
* java 。
*/
public class BufferedTest {
public static void main(String[] args) {
BufferedWriter bufw = null ;
MyBufferedReader bufr = null ;
try{
bufw = new BufferedWriter(new FileWriter("G:\\Stu_copy.java"));
bufr = new MyBufferedReader(new FileReader("G:\\Stu.java"));
String line=bufr.myReadLine() ;
while(line!=null){
bufw.write(line);
bufw.flush();
if((line=bufr.myReadLine())!=null)
if(!(line.equals("\r
")))
bufw.newLine();
}
}catch(IOException e){}
finally{
try{
if(bufw!=null)
bufw.close();
}catch(IOException e){}
try{
if(bufr!=null)
bufr.myClose();
}catch(IOException e){}
}
}
}