我成功创建了一个文件并写入了一个日期,但是当我运行应用程序时,文件每次都会覆盖当前日期。
我想做什么:
System.out.println()
。我的代码有什么问题?
public class Main {
public static void main(String[] args) throws IOException{
Date currentDate = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm");
String date = dateFormat.format(currentDate);
File file = new File("outTest.txt");
FileWriter writer = new FileWriter(file);
FileReader fr = new FileReader("outTest.txt");
BufferedReader br = new BufferedReader(fr);
String str;
if (file.length() == 0) {
writer.write(date);
writer.flush();
writer.close();
}
else if(file.length() > 0) {
while ((str = br.readLine()) != null) {
System.out.println(str + "\n");
}
br.close();
}
}
}
答案 0 :(得分:2)
您可以使用Java NIO:
LocalDateTime currentDate = LocalDateTime.now();
String date = DateTimeFormatter.ofPattern("HH:mm").format(currentDate);
Path file = Paths.get("outTest.txt");
if (!Files.exists(file) || Files.size(file) == 0) {
Files.write(file, List.of(date));
}
Files.lines(file).forEach(System.out::println);
编辑:使用java.time
和UTF-8字符集。
编辑2:不需要显式的字符集参数,因为NIO默认使用UTF-8
答案 1 :(得分:0)
检查文件exists,然后打印:
// test to see if a file exists
File file = new File("filename-date.txt");
exists = file.exists();
if (file.exists() && file.isFile())
{
System.out.println("File exists. Here is the name: " + file.getName());
}