在Java中从.txt文件读取文本

在Java中从.txt文件读取文本,java,Java,我的项目中有一段代码: String readFile() { String pathname = saveDirectory + fileName + ".txt"; String content = ""; File f = new File(pathname); if (f.exists() && !f.isDirectory()) { try {

我的项目中有一段代码:

    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()
但是仍然没有错误,而且目录和文件名之间没有缺少一个
/
,我已经在directory变量中添加了
\\

你会忘记目录和文件名之间的/吗?打印路径名的内容并查看


或者更好:调试代码,看看会发生什么。

看起来您正在打开文件一次(
file f=new file(pathname);
),然后尝试在不使用您创建的文件对象的情况下读取它。您可能会收到IOException,因为当f打开文件时,
Files.readAllBytes(path.get(pathname))
无法打开该文件。

如果您没有捕获并忽略IOException,您至少会知道它是否发生,以及问题是什么。在不处理异常的情况下不要捕获异常。如果你不能处理它,扔掉它。胡乱猜测,这很容易通过异常的消息和堆栈跟踪或简单的调试得到确认:您忘记了目录和文件名之间的
/
。您的try块中可能有错误,但是您隐藏了堆栈跟踪。在catch块中,执行e.printStackTrace()检查抛出的任何错误,这将记录所有错误。我尝试了,但仍然没有错误!删除
if
语句。不要检查该文件是否存在或它是一个目录。试着打开它。这就是为什么您的内容是空的,因为它找不到文件。@DavidS,仍然没有一个错误:/
newfile()
没有打开文件。文件对象表示文件系统的路径。不是打开的文件。不,我添加了e.printStackTrace(),但仍然没有错误:/n因为我可以使用Runtine打开它(需要完全相同的路径名),我认为这不是问题所在