Я пытаюсь читать и писать файл с помощью 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", файл пуст. Я не мог писать в этом файле.
Вам нужно закрыть FileWriter
fileWriter.close();
Как предложено JoeBlade, это должно быть сделано в блоке finally:
} catch (IOException e){
e.printStackTrace();
} finally {
if (fileWriter != null) {
fileWriter.close();
}
}
Вам нужно .flush()
и .close()
FileWriter
. Когда flushig FileWriter
, данные отправляются в пункт назначения. Вы также можете рассмотреть использование BufferedFileWriter
, который позаботится о том, чтобы смыть и закрыть вас.
См. Также: разница между функцией flush и close в случае файлового администратора в java
Файл должен быть закрыт file.close()
fileWriter.close();
line.split("\\=")
и затем, наконец, используйтеfilewrite.close()