Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:如何读取文本文件的每一行并将每一行设置为数组元素?_Java_Arrays_File_Bufferedreader_Filereader - Fatal编程技术网

Java:如何读取文本文件的每一行并将每一行设置为数组元素?

Java:如何读取文本文件的每一行并将每一行设置为数组元素?,java,arrays,file,bufferedreader,filereader,Java,Arrays,File,Bufferedreader,Filereader,我试图阅读文本文件每一行中列出的问题,然后将每一行添加到数组中,以便以后可以单独调用它们。我几乎肯定用Java可以做到这一点,但我不确定如何做到这一点 我确实知道如何读取整个文本文件并将其全部设置为字符串: private static String readFile(String pathname) { String line = null; try { BufferedReader reader = new BufferedReader(new Fil

我试图阅读文本文件每一行中列出的问题,然后将每一行添加到数组中,以便以后可以单独调用它们。我几乎肯定用Java可以做到这一点,但我不确定如何做到这一点

我确实知道如何读取整个文本文件并将其全部设置为字符串:

    private static String readFile(String pathname) {
    String line = null;
    try {
        BufferedReader reader = new BufferedReader(new FileReader(pathname));
        while((line = reader.readLine()) != null){
            System.out.println(line);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return line;
}
虽然它与此没有多大关系,正如我提到的,这是一个包含问题的文件。如果我得到了这个问题的解决方案,我会有另一个文件来记录所有问题的答案,然后我会对这个文件做同样的事情

有人知道一种不太复杂的方法吗?如果一定很复杂,那就告诉我。我想一些类型的例子,而不仅仅是链接到不同的网站。我并不是说我只接受这个

谢谢你抽出时间


另外,我已经阅读了关于这个主题的其他问题,但是没有找到一个合适的答案和/或例子来说明我在Java中所做的工作。

使用
ArrayList
,它是动态的,可以找到具体的代码

 private static String readFile(String pathname) {
    List<String> lines = new ArrayList<String> ();
    String line = null;
    try {
        BufferedReader reader = new BufferedReader(new FileReader(pathname));
        while((line = reader.readLine()) != null){
            lines.add(line) ;
            System.out.println(line);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
private static List<String> readFile(String pathname) {
    String line = null;
    List<String> list = new ArrayList<String>();
    try {
        BufferedReader reader = new BufferedReader(new FileReader(pathname));
        while((line = reader.readLine()) != null){
            list.add(line);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return list;
}
私有静态列表读取文件(字符串路径名){
字符串行=null;
列表=新的ArrayList();
试一试{
BufferedReader reader=新的BufferedReader(新文件读取器(路径名));
而((line=reader.readLine())!=null){
列表。添加(行);
}
}捕获(例外e){
e、 printStackTrace();
}
退货清单;
}

对于第二个文件,您应该维护一个
map
意味着一个
map

我将使用一个ArrayList。。。就像这样

ArrayList<String> questions = new ArrayList<String>();


/// in your loop...
while((line = reader.readLine()) != null){
  questions.add(line);
}
ArrayList questions=new ArrayList();
///在你的循环中。。。
而((line=reader.readLine())!=null){
问题。添加(行);
}

顺便说一句,正如jlordo在注释中指出的那样,按照您构建方法的方式,跳出循环的唯一方法是让行为null,因此,当您到达return语句时,您将返回null。你到底想回到这里干什么?如果是整个文件中的行,则需要在运行时将它们添加到字符串中。

难道不能创建一个字符串数组列表,并使用readLine()将读取的每一行添加到其中吗?然后可以将arraylist转换为普通数组

listArray.toArray(strArray);
使用番石榴:

单行代码:

System.out.println(Files.readLines(new File("C:\\sample.txt"), Charsets.UTF_8));

这在java 8中非常简单和简洁:

List<String> fileLines = Files.lines(Paths.get("/file/path/")).collect(Collectors.toList());
List fileLines=Files.lines(path.get(“/file/path/”)).collect(Collectors.toList());

是否有任何情况需要将问题和答案链接起来
我确实知道如何读取整个文本文件并将其全部设置为字符串:
否,当您返回字符串时,您的字符串将为
null
List<String> fileLines = Files.lines(Paths.get("/file/path/")).collect(Collectors.toList());