Java中使用方法读取多行文本至数组时换行异常问题求助
搞定多行文本文件转数组的问题
嘿,我来帮你排查下这个方法失效的问题,顺便满足控制台换行的需求!
先说说你代码里可能踩的坑
- 文件流没正确关闭:如果你的
fromTextToArray方法里用完流没关闭,第二次调用时可能没法重新读取文件,导致数组是空的 - 没处理异常:你的
main方法直接调用了抛出IOException的方法,但没捕获或声明抛出,这会直接编译报错 - 控制台换行没落实:你说第一次调用后需要控制台换行,但原代码里没加对应的输出语句
修正后的完整代码
我给你调整了方法实现,用更安全的方式读取文件,同时满足你的需求:
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class TextToArrayHandler { public static void main(String[] args) { String[] arr = new String[20]; try { // 第一次调用方法,把文本行存入arr fromTextToArray(arr); // 这里加一行换行,满足你要的控制台换行需求 System.out.println(); String[] arr2 = new String[20]; // 第二次调用,存入arr2 fromTextToArray(arr2); } catch (IOException e) { // 捕获异常并打印,避免程序崩溃 System.err.println("读取文件出错啦:" + e.getMessage()); e.printStackTrace(); } } public static void fromTextToArray(String[] strArray) throws IOException { // 用try-with-resources语法,自动关闭流,绝对不会漏关! try (BufferedReader reader = new BufferedReader(new FileReader("你的文件路径.txt"))) { String line; int currentIndex = 0; // 逐行读,直到文件读完或者数组存满 while ((line = reader.readLine()) != null && currentIndex < strArray.length) { strArray[currentIndex] = line; // 如果你需要把每行内容打印出来,就保留这句,不需要可以删掉 System.out.println(strArray[currentIndex]); currentIndex++; } } } }
几个关键的改进点
- 自动关闭流:
try-with-resources会在代码块结束后自动关闭BufferedReader,彻底避免资源泄漏,每次调用方法都是重新打开文件,不会互相影响 - 异常处理:在
main方法里捕获了IOException,程序不会因为文件找不到、读取出错直接崩溃,还能看到错误信息 - 数组越界防护:加了
currentIndex < strArray.length的判断,就算文件行数超过数组长度,也不会抛出数组越界异常 - 明确的控制台换行:第一次调用方法后加了
System.out.println(),完美满足你要的换行需求
内容的提问来源于stack exchange,提问作者blockByblock
相关产品推荐
相关产品推荐

