ダークホースプログラマー_JAvaはBufferedReaderでreadLineがファイルをコピーする際に存在する問題と改善方法について.


--------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){} } } }