gpt4 book ai didi

java - 我正在尝试将文本从控制台记录到文本文件,但未创建文本文件

转载 作者:行者123 更新时间:2023-12-01 04:45:44 24 4
gpt4 key购买 nike

这是我的代码,我想知道为什么它没有记录任何内容。当我在控制台中输入时,它显示:

你好

2013 年 4 月 8 日 10:13:47 PM java.util.logging.LogManager$RootLogger 日志

信息:你好

但是,没有任何内容被记录到任何文件中。

import java.io.IOException;
import java.util.Scanner;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;

public class main {
public static void main(String[] args) throws IOException{

while (1 == 1) {
String text;
Scanner in = new Scanner(System.in);
text = in.nextLine();
FileHandler fileTxt;
SimpleFormatter formatterTxt;
Logger logger = Logger.getLogger("");
logger.setLevel(Level.INFO);
fileTxt = new FileHandler("../loggedText.txt");
formatterTxt = new SimpleFormatter();
fileTxt.setFormatter(formatterTxt);
logger.addHandler(fileTxt);
logger.info(text);
}
}
}

最佳答案

您的循环永远不会终止,这意味着 JVM 永远不会执行正确的关闭。仅当所有日志记录关闭 Hook 正常执行时,FileHandler 才会关闭并同步。数据可能已写入但从未写入synched with the filesystem .

让我们创建一个可以正常终止的更正示例:

public class main {

private static final Logger logger = Logger.getLogger(""); //Prevent G.C.

public static void main(String[] args) throws IOException {
logger.setLevel(Level.INFO);
FileHandler fileTxt = new FileHandler("../loggedText.txt");
fileTxt.setFormatter(new SimpleFormatter());
logger.addHandler(fileTxt);

System.out.println("root.level " + logger.getLevel());
System.out.println("FileHandler.level " + fileTxt.getLevel());
Scanner in = new Scanner(System.in);
String text;
while (true) {
System.out.print("Enter text: ");
text = in.nextLine();
if (text != null && !text.isEmpty()
&& !"quit".equalsIgnoreCase(text)) {
logger.info(text);
} else {
System.out.println("Done!");
break;
}
}
}
}

将向控制台输出以下内容:

root.level INFO
FileHandler.level ALL
Enter text: hello
Nov 22, 2016 10:39:19 AM java.util.logging.LogManager$RootLogger log
INFO: hello
Enter text: quit
Done!

文件系统上的 loggedText.txt 包含:

Nov 22, 2016 10:39:19 AM java.util.logging.LogManager$RootLogger log
INFO: hello

如果无法正常终止,则需要在您创建的处理程序上显式调用 FileHandler.close()

注意:记录的类名和方法名不正确,即 JDK-8152389 .

关于java - 我正在尝试将文本从控制台记录到文本文件,但未创建文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15892193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com