【发布时间】:2015-09-15 21:20:49
【问题描述】:
我的项目中有这段代码:
String readFile() {
String pathname = saveDirectory + fileName + ".txt";
String content = "";
File f = new File(pathname);
if (f.exists() && !f.isDirectory()) {
try {
content = new String(Files.readAllBytes(Paths.get(pathname)));
}
catch (IOException e) { }
}
return content;
}
没有错误,应用程序运行得很好,但content 变量中从来没有任何文本,我确信 txt 文件中有文本!
我已经尝试过不同的方法来读取文本文件(使用 BufferedReader、Scanner、FileInputStream 和 FileReader),但都没有奏效。
附言。我几乎可以肯定问题不在pathname 变量中,因为我尝试通过代码(使用运行时)打开文件并且它正常打开了正确的文件。
好的,我尝试添加e.printStackTrace();,但仍然没有错误,并且目录和文件名之间没有缺少/,我已经在目录变量中添加了\\。
【问题讨论】:
-
如果您没有捕获并忽略 IOException,您至少会知道它是否发生,以及问题所在。不要在不处理异常的情况下捕获异常。如果你不能处理它,就扔掉它。疯狂的猜测,很容易通过异常的消息和堆栈跟踪来确认,或者通过简单的调试:你忘记了目录和文件名之间的
/。 -
您的 try 块中可能有错误,但您隐藏了堆栈跟踪。在 catch 块中执行 e.printStackTrace() 来检查是否有任何错误被抛出,这将记录任何错误。
-
我试过了,仍然没有错误!
-
删除
if语句。不要检查文件是否存在或者它是一个目录。只是尝试打开它。这就是您的内容为空的原因,因为它没有找到文件。 -
@DavidS,仍然没有一个错误:/
标签: java