这是固定的!感谢Edgar Boda。
我创建了一个应该读取文本文件并将其放入数组的类:
private static String[] parts;
public static void Start() throws IOException{
InputStream instream = new FileInputStream("Storyline.txt");
InputStreamReader inputreader = new InputStreamReader(instream);
BufferedReader buffreader = new BufferedReader(inputreader);
int numberOfLines=0, numberOfActions;
String line = null, input="";
while((line=buffreader.readLine())!=null){
line=buffreader.readLine();
input+=line;
}
parts=input.split(";");
}
但是,当我尝试输出数组时,它只包含一个字符串。我放入文件的最后一个。
这是我读的文件:
0;0;
Hello!;
Welcome!To this.;
56;56;
So;
我认为这是循环中的一些东西;但是试图将parts[number]
放在那里是行不通的...有什么建议吗?
答案 0 :(得分:0)
只包含最后一行;你每次都要重新分配parts
:
parts = line.split(";");
这会破坏先前的引用,并将对新数组的引用重新分配给它。更好的方法可能是使用StringBuilder
并附加行然后再拆分:
StringBuilder stringBuilder = new StringBuilder();
while((line=buffreader.readLine())!=null){
stringBuilder.append(line);
}
parts = stringBuilder.toString().split(";");
这样您就可以在一个数组中获得所需的一切。如果要分割所有一个数组 / 行的所有内容,则需要parts
为二维数组。但缺点是你需要知道文件中有多少行。相反,您可以使用List<String[]>
来跟踪数组:
List<String[]> lineParts = new ArrayList<String[]>();
while((line=buffreader.readLine())!=null){
lineParts.add(line.split(";"));
}
答案 1 :(得分:0)
您希望首先将整个文件读入字符串:
String line = null;
String input = "";
while((line=buffreader.readLine())!=null){
input += line;
}
parts = input.split(";");
答案 2 :(得分:0)
您在parts
循环的每次迭代中都覆盖了字符串数组while
,这就是为什么它只包含最后一行。
要存储整个文件内容,并且字段已拆分,您需要一个二维数组,而不是一维数组。假设文件中有5行:
private static String[][] parts = new String[5][];
然后将每个拆分数组分配给每个循环parts
的元素:
parts[i++]=line.split(";"); // Assuming you define "i" for the line number
此外,split
默认情况下会丢弃尾随的空标记。要保留它们,请使用带有limit
参数的two-arg overload of split
。传递一个负数以保留所有代币。
parts[i++] = line.split(";", -1);