Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.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 - Fatal编程技术网

Java中的文件读取器

Java中的文件读取器,java,Java,在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算法来将这些数据存储在数据结构中,例如

在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算法来将这些数据存储在数据结构中,例如数组列表、数组、堆栈等


非常感谢。我刚刚开始编程,如果这个问题与堆栈溢出修辞不符,我感到非常抱歉。

您可以使用Java 8流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();
        }
    }

}
导入java.nio.file.Files;
导入java.nio.file.path;
导入java.util.stream.stream;
导入java.util.*;
公共类streamFileRead{
公共静态void main(字符串参数[]){
字符串文件名=”drive://location//fn.txt";
列表=新的ArrayList();
try(Stream=Files.line(path.get(fileName))){
list=stream.collect(Collectors.toList());
}捕获(IOE异常){
e、 printStackTrace();
}
}
}

我保证这比使用循环读取每一行和使用
\n

识别换行更快、更简单。您可以使用Java8流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();
        }
    }

}
导入java.nio.file.Files;
导入java.nio.file.path;
导入java.util.stream.stream;
导入java.util.*;
公共类streamFileRead{
公共静态void main(字符串参数[]){
字符串文件名=”drive://location//fn.txt";
列表=新的ArrayList();
try(Stream=Files.line(path.get(fileName))){
list=stream.collect(Collectors.toList());
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
我保证这比使用循环读取每一行并使用
\n

识别换行更快速、更简单。您可以尝试以下方法:

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);
    }
}
类读取文件{
公共静态void main(字符串[]args)引发IOException{
文件fp=新文件(fn);
FileReader fr=新的FileReader(fp);
BufferedReader bfr=新的BufferedReader(fr);
列表=新的ArrayList();
字符串s=“”;
而((s=(bfr.readLine())!=null){
列表。添加(s);
}
系统输出打印(列表);
}
}
您可以尝试以下方法:

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);
    }
}
类读取文件{
公共静态void main(字符串[]args)引发IOException{
文件fp=新文件(fn);
FileReader fr=新的FileReader(fp);
BufferedReader bfr=新的BufferedReader(fr);
列表=新的ArrayList();
字符串s=“”;
而((s=(bfr.readLine())!=null){
列表。添加(s);
}
系统输出打印(列表);
}
}

您可以使用
缓冲读取器
读取所有行吗?1)如何将第一行存储在不同的整数中,2)最好将其存储在什么数据结构中?您可以使用
缓冲读取器
读取所有行吗?1)如何将第一行存储在不同的整数中,2)什么样的数据结构最适合存储此数据?如果使用nio,也可以使用。还有
BufferedReader#行
。你说的apache库是什么意思?@dan1st这个库是
java.nio
。从什么时候开始,它是apache库而不是默认的java?那么
Files.lines
到底在哪里呢?你是说
BufferedReader
中的方法吗?如果你使用nio,你也可以使用。还有
BufferedReader#行
。你说的apache库是什么意思?@dan1st这个库是
java.nio
。从什么时候开始,它是apache库而不是默认的java?那么
Files.lines
到底在哪里呢?您是指
缓冲区读取器中的方法吗?