【问题标题】:File Reader in Java [duplicate]Java中的文件阅读器[重复]
【发布时间】:2020-11-17 12:39:24
【问题描述】:

在 java 中:我正在读取一个名为 fn 的文件。它是一个文本文件,第一个数字给出了行数和字符数:

例子:

4
AFBA\n 
BBBB\n 
EFHE\n 
EFJH\n 

每 4 个字符后有一个新行。这适用于 4 行。

到目前为止我所拥有的是:

File fp = new File(fn);
FileReader fr = new FileReader(fp);
BufferedReader bfr = new BufferedReader(fr);

如何创建一个java算法来将这些数据存储在一个数据结构中,比如数组列表、数组、堆栈等

非常感谢。我刚刚开始编程,如果这个问题与堆栈溢出的言论不符,我很抱歉。

【问题讨论】:

  • 你可以使用BufferedReader 读取所有行吗?
  • 1) 我如何将第一行存储在不同的 int 中,2) 最好将其存储在什么数据结构中?

标签: java


【解决方案1】:

您可以使用 Java 8 Stream API 和 nio 库将每一行作为一个对象存储在一个集合中。例如:

import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.stream.Stream;
import java.util.*;

public class streamFileRead {

    public static void main(String args[]) {

        String fileName = "drive://location//fn.txt";
        List<String> list = new ArrayList<String>();
        
        try (Stream<String> stream = Files.lines(Paths.get(fileName))) {

            list = stream.collect(Collectors.toList());

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

}

我保证这比使用循环读取每一行并使用\n 识别换行符要快得多且万无一失。

【讨论】:

  • 如果你使用nio,你也可以使用docs.oracle.com/javase/7/docs/api/java/nio/file/…
  • 也有BufferedReader#lines。你的意思是什么 apache 库?
  • @dan1st 库是java.nio
  • 从什么时候开始是 apache 库而不是默认 java?
  • 那么Files.lines 到底在哪里?你是指BufferedReader中的方法吗?
【解决方案2】:

你可以试试这个:

class ReadFile{
    public static void main(String[] args) throws IOException {
        File fp = new File(fn);
        FileReader fr = new FileReader(fp);
        BufferedReader bfr = new BufferedReader(fr);
        List<String> list= new ArrayList<>();
        String s="";
        while( (s=(bfr.readLine()))!=null){
            list.add(s);
        }
        System.out.print(list);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    • 2014-08-10
    • 1970-01-01
    • 2016-01-23
    • 2015-11-11
    • 2013-12-09
    • 1970-01-01
    相关资源
    最近更新 更多