【问题标题】:Creating a Java.util.List from an existing .txt file 'FIXED'从现有的 .txt 文件“FIXED”创建 Java.util.List
【发布时间】:2016-03-04 10:13:30
【问题描述】:

我正在尝试从现有的 .txt 文件创建一个 java.util.List,当创建该列表并用 .txt 文件中的 java.util.String 填充时,我想将它打印到控制台测试列表是否已填满。我尝试了很多,但总是遇到同样的错误。

项目布局如下:Module (QaA), src(WriteTest.java and testfile.txt)。

testfile.txt 包含以下内容:

第一句测试
句子二测试
第三句测试
第四句测试

WriteTest 类:

import java.io.IOException;
import java.nio.file.Files; 
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;


public class WriteTest {
public static void main(String[] args) throws IOException {
    Path testPath = Paths.get("src/testfile.txt");

    try {
        List<String> lines = Files.readAllLines(testPath);

        for (String line : lines) {
            System.out.println(line);   
        }

    } catch (IOException e) {
        e.printStackTrace();
    }
}
}

收到以下错误:

java.nio.file.NoSuchFileException: src\testfile.txt
at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:79)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
at sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:230)
at java.nio.file.Files.newByteChannel(Files.java:361)
at java.nio.file.Files.newByteChannel(Files.java:407)
at java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:384)
at java.nio.file.Files.newInputStream(Files.java:152)
at java.nio.file.Files.newBufferedReader(Files.java:2784)
at java.nio.file.Files.readAllLines(Files.java:3202)
at java.nio.file.Files.readAllLines(Files.java:3242)
at WriteTest.main(WriteTest.java:15)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

我找到了导致大量错误的另一个原因。我的 .txt 文件的位置不应该在 src 中。我尝试将它移出,与我的模块平行,并且可以检测到它。

【问题讨论】:

  • 请发布错误堆栈跟踪
  • @HimanshuBhandari 有了这样的代码,可能是FileNotFoundException
  • 提示:使用System.out.println(Paths.get(".").toAbsolutePath()); 以便在搜索具有相对路径的文件时知道您在哪里。
  • 尝试只传递文件名,即 Paths.get("testfile.txt");
  • 我尝试将路径更改为 Paths.get("testfile.txt") 最终给了我同样的错误。

标签: java list text-files file.readalllines


【解决方案1】:

您的代码在我的工作区有错误,我更改了 readAllLines,如下所示,并为路径添加了 toAbsolutePath

public static void main(String[] args) throws IOException
{
    Path testPath = Paths.get("src/testfile.txt").toAbsolutePath();
    System.out.println("path:\t" + testPath);
    try
    {
        Charset cs = Charset.defaultCharset();
        List<String> lines = Files.readAllLines(testPath, cs);

        for (String line : lines)
        {
            System.out.println(line);
        }

    }
    catch (IOException e)
    {
        e.printStackTrace();
    }
}

【讨论】:

  • 这确实给了我绝对路径。尝试在控制台中打印时仍然出现错误,但我设法将文本文件的输出放入屏幕。感谢您的帮助!
【解决方案2】:

进行如下更改以获得给定的文件路径。

Path testPath = Paths.get(System.getProperty("user.dir")+"src/testfile.txt");

【讨论】:

    猜你喜欢
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 2017-07-19
    • 2016-01-06
    • 1970-01-01
    • 2016-04-11
    • 2017-01-26
    相关资源
    最近更新 更多