【问题标题】:I couldn't write a string in a txt我无法在 txt 中写入字符串
【发布时间】:2014-12-23 07:57:04
【问题描述】:

我尝试使用 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”文件时,该文件是空的。我无法写入该文件。

【问题讨论】:

  • 使用line.split("\\="),最后使用filewrite.close()
  • 我建议在 finally 块中关闭文件写入器,并从 if-else 块中取出公共代码。

标签: java


【解决方案1】:

您需要 .flush().close() FileWriter。当刷新FileWriter 时,数据被发送到它的目的地。您也可以考虑使用BufferedFileWriter,它会为您处理冲洗和关闭。

另请参阅:difference between flush and close function in case of filewriter in java

【讨论】:

    【解决方案2】:

    你需要关闭你的 FileWriter

    fileWriter.close();
    

    正如 JoeBlade 所建议的,这应该在 finally 块中完成:

    } catch (IOException e){
        e.printStackTrace();
    } finally {
        if (fileWriter != null) {
            fileWriter.close();
        }
    }
    

    【讨论】:

    • 我会扩展答案,建议在 finally 块中进行,因为作者有一个 try / catch 到位。
    【解决方案3】:

    文件必须关闭file.close()

    fileWriter.close();
    

    【讨论】:

      猜你喜欢
      • 2017-03-05
      • 1970-01-01
      • 1970-01-01
      • 2021-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多