我正在读取一个文本文件并试图通过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
}
答案 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()方法以返回一个自动调整大小的数组。