在Java中将文本文件读入char数组

时间:2012-10-31 05:21:43

标签: java arrays file-io char bufferedreader

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

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
}

2 个答案:

答案 0 :(得分:5)

使用CharacterList of Characters接受这些值。之后将ArrayList转换为数组

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

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

String str;
while((str = br.readLine())!=null){
        str.tocharArray();
}

答案 1 :(得分:4)

改用扫描仪!

我会使用扫描仪并通过char读取行而不是char,然后将其存储为字符串。如果你真的想要一个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()方法以返回一个自动调整大小的数组。