我正在尝试构建Java应用程序,作为此应用程序的一部分,我想记下事件发生的日期和时间。我使用的当前代码看起来像这样:
public static void main(String[] args){
List<String> list=new LinkedList<>();
DateTimeFormatter formatter=DateTimeFormatter.ofPattern("MM-dd-yyyy HH:mm:ss");
LocalDateTime now=LocalDateTime.now();
String formatDateTime=now.format(formatter);
list.add(formatDateTime);
System.out.println(list);
System.out.println(formatDateTime);
}
此程序的输出现在看起来像这样:
[06-16-2017 20:35:51] 06-16-2017 20:35:51
但是,这不是我所期待的。我想存储已记录的日期和时间,但每次运行时此代码的输出都不同。有没有什么办法可以在每次程序运行时单独存储日期和时间。为了使问题有点清楚,如果我最初在20:35:51运行程序,我希望这个时间存储起来。如果我在20:36:52运行它,我仍然希望第一次在我的记录中可用。请帮我解决这个问题。感谢。
答案 0 :(得分:1)
您必须将日期存储在某处,否则当您的程序结束时,变量(以及您的日期列表)将从内存中释放并丢失。
也许写入.txt或.csv文件?有关如何在线完成此操作的大量指南。然后,您可以编写一个方法来读取文件中的所有日期,这样您就可以记录您的“活动”时间。发生了/你的程序已经运行。
编辑: 我喜欢Vasyl的回答,文件浏览器很好但是有点过分,我想在这种情况下你不关心指定每次事件发生/程序运行时要写入哪个文件,你只想要吐出你的文本文件。
这是我的建议:
public static void main(String[] args) {
List<String> list = new LinkedList<>();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-dd-yyyy HH:mm:ss");
LocalDateTime now = LocalDateTime.now();
String formatDateTime = now.format(formatter);
list.add(formatDateTime);
System.out.println(list);
System.out.println(formatDateTime);
String recordPath = "Records.txt";
BufferedWriter writer;
FileWriter fw;
try{
fw = new FileWriter(recordPath, true);
writer = new BufferedWriter(fw);
for(String str : list){
writer.write(str);
writer.newLine();
writer.flush();
}
System.out.println("Done writing!");
writer.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
我宁愿在最后一个块中使用.close()但是因为我们在main中工作是不可能的。理想情况下,将它放在自己的类和方法中。
.txt文件中的输出(在运行树时间之后):
06-17-2017 03:38:25
06-17-2017 03:39:52
06-17-2017 03:40:06
答案 1 :(得分:0)
存储在txt文件中的一种方法:
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.LinkedList;
import java.util.List;
import javax.swing.JFileChooser;
public class NewClass1 {
public static void main(String[] args) {
List<String> list = new LinkedList<>();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-dd-yyyy HH:mm:ss");
LocalDateTime now = LocalDateTime.now();
String formatDateTime = now.format(formatter);
list.add(formatDateTime);
System.out.println(list);
System.out.println(formatDateTime);
File f = null;
JFileChooser chooser = new JFileChooser();
int returnVal = chooser.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
f = chooser.getSelectedFile();
}
try (FileWriter fw = new FileWriter(f, true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter out = new PrintWriter(bw)) {
out.println(list);
out.println(formatDateTime);
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
}
}
<强>输出:强>
[06-16-2017 22:16:02]
06-16-2017 22:16:02
在文件中:
[06-16-2017 22:16:02]
06-16-2017 22:16:02
[06-16-2017 22:17:29]
06-16-2017 22:17:29