Я не мог написать строку в текстовом формате

1

Я пытаюсь читать и писать файл с помощью java. Я пробовал свой код, но он не работает должным образом.

Ниже приведен мой код:

import java.util.*;
import java.io.*;

public class UptimeSample {


    public static void main(String[] args) {
        try
        {
            double oldTime=0;
            BufferedReader read=new BufferedReader(new FileReader("C:/eGurkha/agent/sample/UptimeRecord.txt"));
            String oldline=read.readLine();
            if(oldline == null)
            {
                System.out.println("New Entry ::::");
                Process p=Runtime.getRuntime().exec("C:\\eGurkha\\lib\\vmgfiles\\win\\VmgUptimeTest.exe");
                BufferedReader rd=new BufferedReader(new InputStreamReader(p.getInputStream()));
                String line=rd.readLine();
                System.out.println(line);
                String[] word=line.split("=");
                FileWriter fileWriter=new FileWriter("C:/eGurkha/agent/sample/UptimeRecord.txt");
                fileWriter.write(word[1]);
                System.out.println("New System Time is :"+word[1]);
                System.out.println("String Written");
            }
            else
            {
                oldTime=Double.parseDouble(oldline);
                Process p=Runtime.getRuntime().exec("C:\\eGurkha\\lib\\vmgfiles\\win\\VmgUptimeTest.exe");
                BufferedReader rd=new BufferedReader(new InputStreamReader(p.getInputStream()));
                String line=rd.readLine();
                String[] word=line.split("=");
                FileWriter fileWriter=new FileWriter("C:/eGurkha/agent/sample/UptimeRecord.txt");
                fileWriter.write(word[1]);
                System.out.println("New System Time is :"+word[1]);
                System.out.println("String Written");
                double crrTime=Double.parseDouble(word[1]);
                double diffTime=crrTime-oldTime;
                System.out.println("Difference Time is :"+diffTime);
            }
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }

    }

}

Он дает следующий результат:

New Entry ::::
System=13042.827175
New System Time is :13042.827175
String Written

Результат правильный, но проблема в том, что я открываю файл "UptimeRecord.txt", файл пуст. Я не мог писать в этом файле.

  • 0
    используйте line.split("\\=") и затем, наконец, используйте filewrite.close()
  • 0
    Я бы предложил закрыть файловый файл в блоке finally, а также вынуть общий код из блока if-else.
Теги:

3 ответа

2
Лучший ответ

Вам нужно закрыть FileWriter

fileWriter.close();

Как предложено JoeBlade, это должно быть сделано в блоке finally:

} catch (IOException e){
    e.printStackTrace();
} finally {
    if (fileWriter != null) {
        fileWriter.close();
    }
}
  • 1
    Я бы расширил ответ предложением сделать это в блоке finally, поскольку у автора есть попытка / улов.
3

Вам нужно .flush() и .close() FileWriter. Когда flushig FileWriter, данные отправляются в пункт назначения. Вы также можете рассмотреть использование BufferedFileWriter, который позаботится о том, чтобы смыть и закрыть вас.

См. Также: разница между функцией flush и close в случае файлового администратора в java

1

Файл должен быть закрыт file.close()

fileWriter.close();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню