7

我正在读取一个文本文件并尝试将它逐个字符存储到一个数组中。我的方法(如下)预先定义了char一个初始长度为 100000 的数组(我的主要问题)。因此,如果文件包含的字符少于该数量(如果字符多于该数量,也会出现问题),那么我的数组中有空值。我想避免这种情况。有没有办法预先确定文本文件中存在的字符数量?还是有更好的方法来按字符存储文件?

char buf[] = new char[100000];
FileReader fr = new FileReader(filename);
BufferedReader br = new BufferedReader(fr);
br.read(buf);
for(int i = 0; i < buf.length; i++)
{
     //Do stuff here
}
4

2 回答 2

5

使用 ArrayList of Characters 来接受这些值。之后将 ArrayList 转换为 Array 为

 char[] resultArray = list.toArray(new char[list.size()]);

您应该使用 br.readLine() 而不是 br.read(),如下所示:

String str;
while((str = br.readLine())!=null){
        str.tocharArray();
}
于 2012-10-31T05:23:36.170 回答
4

改用扫描仪!

我会使用扫描仪并逐行读取而不是逐字符读取,然后将其存储为字符串。如果您真的想要一个 char 数组,那么之后更容易将其取出。

这在功能上做同样的事情:

String theString = "";

File file = new File("data.txt");
Scanner scanner = new Scanner(file);

theString = scanner.nextLine();
while (scanner.hasNextLine()) {
       theString = theString + "\n" + scanner.nextLine();
}

char[] charArray = theString.toCharArray();

这样做的好处是您可以利用 Java 的 String 类型,它为您处理所有讨厌的长度和连接业务。并且 String.toCharArray() 方法已经内置以返回一个数组,该数组会根据您的需要自动调整大小。

于 2012-10-31T05:26:42.003 回答