Java 正在尝试将数据写入.txt文件。我做错了什么?
我想将数据(函数运行所需的时间)写入一个.txt文件,这样我就可以将其放入Excel并制作电子表格(可以在Excel中制作日志和半日志图) 以下是我目前掌握的情况: timing.javaJava 正在尝试将数据写入.txt文件。我做错了什么?,java,file,Java,File,我想将数据(函数运行所需的时间)写入一个.txt文件,这样我就可以将其放入Excel并制作电子表格(可以在Excel中制作日志和半日志图) 以下是我目前掌握的情况: timing.java public static void main(String args[]) { Stopwatch timeMe = new Stopwatch(); ... try { File logFile = new File("log.txt");
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();
}
...
}
/**
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); }
}
问题是,当我在秒表中更改任何内容时,即删除“已用时间:”和“秒”。在.toString()方法中隔离数字时,不会向文件中打印任何内容。换句话说,.txt文件是空的。当我使用原始Stopwatch.java文件运行它时,所有内容都会打印到log.txt文件中,但我不需要此文本。是否关闭该文件,和/或?否则,当程序终止时,数据可能会被缓冲,但不会被写入 它可能会一直工作,直到您删除周围的字符,这仅仅是因为您已经生成了足够的文本来自动触发文件写入
相关:是否关闭该文件,和/或?否则,当程序终止时,数据可能会被缓冲,但不会被写入 它可能会一直工作,直到您删除周围的字符,这仅仅是因为您已经生成了足够的文本来自动触发文件写入
相关:是否关闭该文件,和/或?否则,当程序终止时,数据可能会被缓冲,但不会被写入 它可能会一直工作,直到您删除周围的字符,这仅仅是因为您已经生成了足够的文本来自动触发文件写入
相关:是否关闭该文件,和/或?否则,当程序终止时,数据可能会被缓冲,但不会被写入 它可能会一直工作,直到您删除周围的字符,这仅仅是因为您已经生成了足够的文本来自动触发文件写入 相关的: 在这里,您创建了一个名为
logFile
的文件
// if file doesnt exists, then create it
if (!logFile.exists()) {
logFile.createNewFile();
System.out.println("doesn't exist");
}
这里你已经用另一个覆盖了它。如果您在Unix、Linux等平台上,fw2
将继续写入上一个文件,但它已被删除,因此您将永远看不到数据。移除整个块
在这里,您创建了一个名为logFile
的文件
// if file doesnt exists, then create it
if (!logFile.exists()) {
logFile.createNewFile();
System.out.println("doesn't exist");
}
这里你已经用另一个覆盖了它。如果您在Unix、Linux等平台上,fw2
将继续写入上一个文件,但它已被删除,因此您将永远看不到数据。移除整个块
在这里,您创建了一个名为logFile
的文件
// if file doesnt exists, then create it
if (!logFile.exists()) {
logFile.createNewFile();
System.out.println("doesn't exist");
}
这里你已经用另一个覆盖了它。如果您在Unix、Linux等平台上,fw2
将继续写入上一个文件,但它已被删除,因此您将永远看不到数据。移除整个块
在这里,您创建了一个名为logFile
的文件
// if file doesnt exists, then create it
if (!logFile.exists()) {
logFile.createNewFile();
System.out.println("doesn't exist");
}
这里你已经用另一个覆盖了它。如果您在Unix、Linux等平台上,
fw2
将继续写入上一个文件,但它已被删除,因此您将永远看不到数据。移除整个块 必须关闭写入程序。阅读为什么有两个文件?你为什么不给第二个写信?为什么你把名字弄混了,所以fw=logfile2
,反之亦然?编写器必须关闭。阅读为什么有两个文件?你为什么不给第二个写信?为什么你把名字弄混了,所以fw=logfile2
,反之亦然?编写器必须关闭。阅读为什么有两个文件?你为什么不给第二个写信?为什么你把名字弄混了,所以fw=logfile2
,反之亦然?编写器必须关闭。阅读为什么有两个文件?你为什么不给第二个写信?为什么你把名字弄混了,使之成为fw=logfile2
,反之亦然?这绝对是个好建议,但我确实看到OP孤立了fw2
(logFile
)指向的文件,而不是fw
(他写的)。无论哪种方式,我都不确定toString()
方法中的孤立更改会如何影响这一点。这绝对是一个值得遵循的好建议,但我确实看到OP孤立了fw2
(logFile
)指向的文件,而不是fw
(他写的)。无论哪种方式,我都不确定toString()
方法中的孤立更改会如何影响这一点。这绝对是一个值得遵循的好建议,但我确实看到OP孤立了fw2
(logFile
)指向的文件,而不是fw
(他写的)。无论哪种方式,我都不确定toString()
方法中的孤立更改会如何影响这一点。这绝对是一个值得遵循的好建议,但我确实看到OP孤立了fw2
(logFile
)指向的文件,而不是fw
(他写的)。无论哪种方式,我都不确定toString()
方法中的孤立更改会如何影响这一点。