java从文件中读取数据的六种方法是什么,java如何从文件中读取数据,java从文件中读取数据的六种方法

java从文件中读取数据的六种方法是什么,java如何从文件中读取数据,java从文件中读取数据的六种方法

本文主要介绍了Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)从文件中读取数据的方法,详细的介绍了六种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

目录

1.扫描仪

2.Files.lines (Java 8)

3.Files.readAllLines(java8)

4.Files.readString(JDK 11)

5.Files.readAllBytes()

6.经典管道流的方式

本文主要介绍了Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)从文件中读取数据的六种方法,分享给大家,具体如下:

扫描仪(Java 1.5)按行读数据及String、Int类型等按分隔符读数据。

文件。行,返回流(Java 8)流式数据处理,按行读取

Files.readAllLines,返回列表(Java 8)

Files.readString,读取字符串(Java 11),文件最大2G .

Files.readAllBytes,读取byte[](Java 7),文件最大2G .

BufferedReader,经典方式(Java 1.1 -永远)

1.扫描仪

第一种方式是扫描仪,从JDK1.5开始提供的API,特点是可以按行读取、按分割符去读取文件数据,既可以读取线类型,也可以读取(同国际组织)国际组织类型、长类型等基础数据类型的数据。

@测试

void testReadFile1()引发IOException {

//文件内容:Hello World|Hello Zimug

字符串fileName=' D:\ \ data \ \ test \ \ new file 4。txt ';

try(Scanner sc=new Scanner(new FileReader(fileName))){

while (sc.hasNextLine()) { //按行读取字符串

string line=sc。next line();

系统。出去。println(line);

}

}

try(Scanner sc=new Scanner(new FileReader(fileName))){

即usedelimiter(' \ \ | ');//分隔符

while (sc.hasNext()) { //按分隔符读取字符串

字符串str=sc。next();

系统。出去。println(str);

}

}

//sc.hasNextInt()、hasNextFloat()、基础数据类型等等等等。

//文件内容:1|2

fileName=' D:\ \ data \ \ test \ \ new file 5。txt ';

try(Scanner sc=new Scanner(new FileReader(fileName))){

即usedelimiter(' \ \ | ');//分隔符

while (sc.hasNextInt()) { //按分隔符读取(同国际组织)国际组织

int int value=sc。nextint();

系统。出去。println(int value);

}

}

}

输出为:

你好世界|你好齐穆格

你好世界

你好,Zimug

2.Files.lines (Java 8)

如果你是需要按行去处理数据文件的内容,这种方式是我推荐大家去使用的一种方式,代码简洁,使用java 8的溪流流将文件读取与文件处理有机融合。

@测试

void testReadFile2()抛出IOException {

string fileName=' D:\ \ data \ \ test \ \ new file。txt ';

//读取文件内容到溪流流中,按行读取

流字符串行=文件。线条(路径。get(文件名));

//随机行顺序进行数据处理

lines.forEach(ele - {

系统。出去。println(ele);

});

}

为每一个获取溪流流中的行数据不能保证顺序,但速度快。如果你想按顺序去处理文件中的行数据,可以使用预先安排好的,但处理效率会下降。

//按文件行顺序进行处理

台词。foreach ordered(系统。out:println);

也可以把溪流转换成列表,但是要注意这意味着你要将所有的数据一次性加载到内存,要注意java.lang.OutOfMemoryError

//转换成列表字符串,要注Java。郎。内存不足错误:Java堆空间

ListString collect=lines。收藏(收藏者。要列出()

3.Files.readAllLines(java8)

@测试

void testReadFile3()抛出IOException {

字符串fileName=' D:\ \ data \ \ test \ \ new file 3。txt ';

//转换成列表字符串,要注意Java。郎。内存不足错误:Java堆空间

ListString lines=文件。读取所有行(路径。获取(文件名),

标准字符集UTF _ 8);

台词。foreach(系统。out:println);

}

4.Files.readString(JDK 11)

从java11开始,为我们提供了一次性读取一个文件的方法。文件不能超过2G,同时要注意你的服务器及虚拟机(Java虚拟机的缩写)内存。这种方法适合快速读取小文本文件。

@测试

void testReadFile4()抛出IOException {

字符串fileName=' D:\ \ data \ \ test \ \ new file 3。txt ';

Java 11提供的方法,不能读取2G以上的文件,和你的内存密切相关。

//String s=files . readstring(paths . get(fileName));

}

5.Files.readAllBytes()

如果你没有JDK11(readAllBytes()以JDK7开头),还想一次性快速读取一个文件的内容并转换成字符串,该怎么做?首先,将数据作为二进制数组读取,然后将其转换为字符串内容。这种方法适合在没有JDK11的情况下快速读取小文本文件。

@测试

void testReadFile5()抛出IOException {

string fileName=' D:\ \ data \ \ test \ \ new file 3 . txt ';

//如果JDK11用了上面的方法,如果没有就好办了。

byte[]bytes=files . read all bytes(paths . get(fileName));

字符串内容=新字符串(字节,标准字符集。UTF _ 8);

System.out.println(内容);

}

6.经典管道流的方式

@测试

void testReadFile6()抛出IOException {

string fileName=' D:\ \ data \ \ test \ \ new file 3 . txt ';

//缓冲流读取,默认缓冲区8k

try(buffered reader br=new buffered reader(new FileReader(fileName))){

弦线;

while ((line=br.readLine())!=null) {

system . out . println(line);

}

}

//用//java 8这样写是可以的

try(buffered reader br=files . newbuffered reader(paths . get(fileName))){

弦线;

while ((line=br.readLine())!=null) {

system . out . println(line);

}

}

}

这种方法可以通过嵌套管道流来组合使用,非常灵活。比如我们想从一个文件中读取java对象,可以使用下面的代码,前提是文件中的数据是ObjectOutputStream写的,然后我们就可以用ObjectInputStream读取了。

try(file inputstream fis=new file inputstream(文件名);

ObjectInputStream ois=新的ObjectInputStream(fis)){

ois . read object();

}

关于java从文件中读取数据的六种方法的这篇文章到此结束。关于java从文件中读取数据的六种方法的更多信息,请搜索我们之前的文章或者继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: