Java读取TXT文件并解析成数组:那些你可能不知道的坑很多新手(甚至一些老手)在Java读取TXT文件并将其内容解析成数组时,常常会掉进一些坑里。这篇文章,咱们就来聊聊这个看似简单,实则暗藏玄机的任务,我会分享一些我的经验,以及一些你可能没注意到的细节。 文章的目的很简单:帮你彻底搞定Java读取TXT文件并将其内容解析成数组,并避免那些常见的错误。读完这篇文章,你将掌握高效、健壮的代码编写方法,以及一些性能调优技巧。 首先,我们需要明确一些基础概念。Java读取文件,通常会用到FileReader或BufferedReader。FileReader比较基础,而BufferedReader则效率更高,因为它可以缓冲读取,减少IO操作次数。 数组方面,你需要根据你的文本文件内容选择合适的数组类型,比如String[]、int[]、double[]等等。 别忘了处理异常,IOException是家常便饭,一定要妥善处理。 接下来,让我们看看核心部分:如何读取文件并解析成数组。假设你的TXT文件每一行都包含一个数字,我们想把它读成一个int[]。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class TxtToArray {
public static int[] readTxtToIntArray(String filePath) {
List<Integer> numbers = new ArrayList<>();
try (BufferedReader reader = new BufferedReader( new FileReader(filePath))) {
String line;
while ((line = reader.readLine()) != null) {
try {
numbers.add(Integer.parseInt(line.trim()));
} catch (NumberFormatException e) {
System.err.println( "Invalid number format in line: " + line);
}
}
} catch (IOException e) {
System.err.println( "Error reading file: " + e.getMessage());
return new int[0];
}
return numbers.stream().mapToInt(Integer::intValue).toArray();
}
public static void main(String[] args) {
String filePath = "numbers.txt" ;
int[] array = readTxtToArray(filePath);
if ( array .length > 0) {
System.out.println( "Array contents:" );
for (int num : array ) {
System.out. print (num + " " );
}
}
}
}
|
这段代码使用了BufferedReader来提高效率,ArrayList来动态存储数字,最后再转换成int[]。 注意try-catch块处理了IOException和NumberFormatException,这是非常重要的。 trim()方法用来去除行首尾的空格,避免因为空格导致parseInt失败。 如果文件读取失败,返回一个空数组,这比抛出异常在某些场景下更方便处理。 这只是最基本的情况。 如果你的文件每一行包含多个数字,用空格或逗号分隔,你需要用String.split()方法进行分割,然后逐个解析成数字。 如果你的文件内容不是数字,而是字符串,那就直接用String[]数组,无需parseInt。 关于性能优化,你可以考虑使用NIO(New I/O)来提高读取速度,特别是对于大型文件。 此外,避免频繁创建对象,合理使用缓存,这些都是提高性能的关键。 代码的可读性和可维护性也同样重要,清晰的注释和合理的代码结构能让你少走很多弯路。 最后,记住,实际应用中,文件路径、错误处理、数据类型等都需要根据你的具体情况进行调整。 这篇文章提供了一个通用的框架,你可以根据自己的需求进行修改和完善。 别忘了多实践,多总结,才能成为真正的编程高手! |