Возникли проблемы при записи строк в файл с помощью BufferedWriter - PullRequest
0 голосов
/ 03 декабря 2018

В следующей простой Java-программе я использую BufferedReader для чтения строки из файла, указанного объектом File с именем dataInFile, а затем записываю каждую строку в файл log.txt с помощью объекта BufferWriter с именем logWriter.

* ПРОБЛЕМА * Считывающая часть работает нормально, файл из 1477 строк читается, как и ожидалось.Однако, когда я записываю строки, вызывая метод writeLog.Кажется, что запись останавливается на строке 1133. Я попытался выполнить некоторую печать внутри метода writeLog, чтобы обнаружить, что все 1477 строк фактически передаются в методе, но я получаю Log.txt только с 1133 строками, но без исключениябыл объявлен.

Может ли быть что-то не так с методом записи BufferWriter?что я пропустил?Надеюсь, вы, ребята, можете мне помочь.

спасибо.

LB: ReadWriteChineseTxt liangbin $ wc -l DataInFile.txt
1477 DataInFile.txt
LB: ReadWriteChineseTxt liangbin $wc -l Log.txt
1133 Log.txt


import java.io.*;

public class ReadWriteChineseTxt
{  
    File inFile;
    File dataInfile, dataOutFile, logFile;
    BufferedWriter logWriter;
    int logLineCount=0;

    class LineEmptyException extends Exception
    {
        String ErrorMessage;
        public LineEmptyException(String ErrMsg)
        {
            ErrorMessage= ErrMsg;
        }
        public String getMessage()
        {
            return this.ErrorMessage;
        }
    }

    public ReadWriteChineseTxt(String configureFilePath)
    {
        BufferedReader cfgReader=null;
        inFile= new File(configureFilePath);

        try {
            cfgReader= new BufferedReader(new InputStreamReader(new FileInputStream(inFile)));
        }catch (FileNotFoundException e) 
        {  
            System.out.println("configuration file is not found.");  
        }

        String firstLine="", secondLine="", thirdLine="";

        try {
            firstLine= cfgReader.readLine();
            if(firstLine==null) throw new LineEmptyException("Error: first empty line read!");
        }catch(LineEmptyException lee) {
            System.out.println(lee.getMessage());
        }catch (IOException e) 
        {  
            System.out.println("Read Exceptioned");  
        }

        this.dataInfile= new File(this.ExtractConfigureFileName(firstLine));

        try {
            secondLine= cfgReader.readLine();
            if(secondLine==null) throw new LineEmptyException("Error: second empty line read!");
        }catch(LineEmptyException lee) {
            System.out.println(lee.getMessage());
        }catch (IOException e) 
        {  
            System.out.println("Read Exceptioned");  
        }

        this.dataOutFile= new File(this.ExtractConfigureFileName(secondLine));

        try {
            thirdLine= cfgReader.readLine();
            if(thirdLine==null) throw new LineEmptyException("Error: third empty line read!");
        }catch(LineEmptyException lee) {
            System.out.println(lee.getMessage());
        }catch (IOException e) 
        {  
            System.out.println("Read Exceptioned");  
        }

        this.logFile= new File(this.ExtractConfigureFileName(thirdLine));

        try{
            this.logWriter= new BufferedWriter(new OutputStreamWriter(new FileOutputStream(logFile)));
        }catch (FileNotFoundException e) 
        {  
            System.out.println("log file is not fond");  
        } 

    }

    String ExtractConfigureFileName(String cfgLine)
    {
        String fileName="";
        fileName= cfgLine.substring(cfgLine.indexOf("=")+1);
        return fileName;
    }

    void writeLog(String logMsg)
    {
        try {
            this.logWriter.write(logMsg+this.logLineCount+"\r\n");
            this.logLineCount++;
            if(this.logLineCount==1133)
            {
                System.out.println("Reaching edge point");
            }
            if(this.logLineCount>1133)
                System.out.println("log written "+ this.logLineCount+": "+logMsg+"\r\n");
            if(this.logLineCount%10==0)
                System.out.println("Log line Count"+this.logLineCount);
        }catch(IOException ioe) {
            ioe.printStackTrace();
        }
        return;
    }

    public static void main(String [] args)
    {  
        ReadWriteChineseTxt ins= new ReadWriteChineseTxt("configure.txt");

        BufferedReader dataReader=null;
        BufferedWriter dataWriter=null;

        try {
            dataReader = new BufferedReader(new InputStreamReader(new FileInputStream(ins.dataInfile)));
            dataWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(ins.dataOutFile)));

            String line="";
            int lineCount=0;

            while((line= dataReader.readLine())!=null )
            {
                ins.writeLog(line);
                lineCount++;
                if(lineCount%10==0)
                    System.out.println("line count: "+ lineCount);
            }
            System.out.println("final line count: "+ lineCount);

        }catch (FileNotFoundException e){  
            System.out.println("file is not fond");  
        }catch (IOException e){  
            System.out.println("Read or write Exceptioned");  
        }finally {
            if(null!= dataReader)
            {
                try {
                    dataReader.close();
                }catch(IOException ioe) {
                    ioe.printStackTrace();
                }
            }
            if(null!= dataWriter)
            {
                try {
                    dataWriter.close();
                }catch(IOException ioe) {
                    ioe.printStackTrace();
                }
            }
        }
    }
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...