【问题标题】:Reading text from a .txt file in Java从 Java 中的 .txt 文件中读取文本
【发布时间】: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


【解决方案1】:

你会不会忘记目录和文件名之间的 / ?打印pathname的内容看看。

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

【讨论】:

  • 因为我可以使用 Runtine 打开它(需要完全相同的路径名),我认为这不是问题
【解决方案2】:

您似乎打开了一次文件 (File f = new File(pathname);),然后尝试在不使用您创建的文件对象的情况下读取它。您可能会收到 IOException,因为 Files.readAllBytes(Paths.get(pathname)) 在 f 打开文件时无法打开它。

【讨论】:

  • new File() 不打开文件。 File 对象表示文件系统的路径。不是打开的文件。
  • 不,我添加了 e.printStackTrace() 并且仍然没有错误:/
猜你喜欢
  • 2015-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-03
  • 2016-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多