尝试将数据写入.txt文件。我究竟做错了什么?

时间:2015-09-03 23:04:21

标签: java file

我想写数据 - 函数运行到.txt文件所需的时间,以便我可以将它带到Excel并制作电子表格(它可以制作日志 - 日志和半Excel中的-log图表)。

这是我到目前为止所拥有的: timing.java

  public static void main(String args[]) {

        Stopwatch timeMe = new Stopwatch();

    ...

    try
    {
        File logFile = new File("log.txt");
        FileWriter fw = new FileWriter(logFile2, true);
        FileWriter fw2 = new FileWriter(logFile, true);
        BufferedWriter bw = new BufferedWriter(fw);

        // if file doesnt exists, then create it
        if (!logFile.exists()) {
            logFile.createNewFile();
            System.out.println("doesn't exist");
        }
    ...

        for (int i = 1000; i <= 256000; i+=1000)
        {
            int[] randomArray = randomarr(i);
            fw.write(String.valueOf(i));
            fw.write(String.format("%n"));
            timeMe.start();
            pluto(randomArray);
            timeMe.stop();
            fw.write(timeMe.toString());
            fw.write(String.format("%n"));
        }
    }

    catch (IOException e)
    {
        e.printStackTrace();
    }
...
}

Stopwatch.java

/**
 A class to measure time elapsed.
*/

public class Stopwatch
{
    private long startTime;
    private long stopTime;

    public static final double NANOS_PER_SEC = 1000000000.0;

    /**
     start the stop watch.
    */
    public void start()
    {   System.gc();
        startTime = System.nanoTime();
    }

    /**
     stop the stop watch.
    */
    public void stop()
    {   stopTime = System.nanoTime();   }

    /**
    elapsed time in secods.
    @return the time recorded on the stopwatch in seconds
    */
    public double time()
    {   return (stopTime - startTime) / NANOS_PER_SEC;  }

    public String toString()
    {   return "elapsed time: " + time() + " seconds."; }

    /**
    elapsed time in nanoseconds.
    @return the time recorded on the stopwatch in nanoseconds
    */
    public long timeInNanoseconds()
    {   return (stopTime - startTime);  }
}

问题是,当我在秒表中更改任何内容时,即删除&#34;经过的时间:&#34;和&#34; 。秒&#34;在.toString()方法中隔离数字,没有任何内容会打印到文件中。换句话说,.txt文件为空。当我使用原始的Stopwatch.java文件运行它时,所有内容都会打印到log.txt文件中,但我不想要这个文本。

2 个答案:

答案 0 :(得分:2)

您是否关闭了文件和/或flush it explicitly?如果没有,您的数据可能会被缓冲但在程序终止时不会被写入。

它可能会工作,直到您删除周围的字符只是因为您已生成足够的文本来自动触发文件写入。

相关:BufferedWriter not writing everything to its output file

答案 1 :(得分:1)

FileWriter fw2 = new FileWriter(logFile, true);

在这里,您创建了一个名为logFile中的任何内容的文件。

// if file doesnt exists, then create it
if (!logFile.exists()) {
    logFile.createNewFile();

    System.out.println("doesn't exist");
}

在这里你用另一个覆盖了它。如果您使用的是Unix,Linux等,fw2将继续写入上一个文件,但它已被删除,因此您永远不会看到数据。删除整个块。