所有,我现在面临的问题是不知道将文本文件中的内容存储到数组中。 情况就像文本文件内容:
abc1
xyz2
rxy3
我希望将它们逐行存储到数组中,这可能吗?我的期望是这样的:
arr[0] = abc1
arr[1] = xyz2
arr[2] = rxy3
我尝试过这样的事情,但似乎不适合我。如果有人可以帮助我,真的非常感谢。
代码是:
BufferedReader in = new BufferedReader(new FileReader("path/of/text"));
String str;
while((str = in.readLine()) != null){
String[] arr = str.split(" ");
for(int i=0 ; i<str.length() ; i++){
arr[i] = in.readLine();
}
}
答案 0 :(得分:22)
我建议使用ArrayList
来处理动态大小调整,而数组需要预先定义的大小,您可能不知道。您始终可以将列表重新转换为数组。
BufferedReader in = new BufferedReader(new FileReader("path/of/text"));
String str;
List<String> list = new ArrayList<String>();
while((str = in.readLine()) != null){
list.add(str);
}
String[] stringArr = list.toArray(new String[0]);
答案 1 :(得分:10)
最简单的解决方案:
List<String> list = Files.readAllLines(Paths.get("path/of/text"), StandardCharsets.UTF_8);
String[] a = list.toArray(new String[list.size()]);
请注意,java.nio.file.Files是1.7以来的
答案 2 :(得分:3)
这应该有效,因为它使用List,因为您不知道文件中有多少行,并且它们可能稍后更改。
BufferedReader in = new BufferedReader(new FileReader("path/of/text"));
String str=null;
ArrayList<String> lines = new ArrayList<String>();
while((str = in.readLine()) != null){
lines.add(str);
}
String[] linesArray = lines.toArray(new String[lines.size()]);
答案 3 :(得分:2)
你需要为你的情况做这样的事情: -
int i = 0;
while((str = in.readLine()) != null){
arr[i] = str;
i++;
}
但请注意,应根据文件中的条目数正确声明arr
。
建议: - 使用List
代替(请查看 @Kevin Bowersox 帖子)
答案 4 :(得分:2)
List<String> lines = IOUtils.readLines(new FileInputStream("path/of/text"));
答案 5 :(得分:2)
Files.lines(new File("/home/abdennour/path/to/file.txt").toPath()).collect(Collectors.toList());
答案 6 :(得分:1)
试试这个:
String[] arr = new String[3];// if size is fixed otherwise use ArrayList.
int i=0;
while((str = in.readLine()) != null)
arr[i++] = str;
System.out.println(Arrays.toString(arr));
答案 7 :(得分:1)
执行str = in.readLine()) != null
时,您在str
变量中读取一行,如果它不为空,则执行while
块。您无需再次在arr[i] = in.readLine();
中读取该行。当您不知道输入文件的确切大小(行数)时,也使用列表而不是数组。
BufferedReader in = new BufferedReader(new FileReader("path/of/text"));
String str;
List<String> output = new LinkedList<String>();
while((str = in.readLine()) != null){
output.add(str);
}
String[] arr = output.toArray(new String[output.size()]);
答案 8 :(得分:1)
您可以使用此完整代码来解决您的问题。 有关详细信息,请查看appucoder.com
class FileDemoTwo{
public static void main(String args[])throws Exception{
FileDemoTwo ob = new FileDemoTwo();
BufferedReader in = new BufferedReader(new FileReader("read.txt"));
String str;
List<String> list = new ArrayList<String>();
while((str =in.readLine()) != null ){
list.add(str);
}
String[] stringArr = list.toArray(new String[0]);
System.out.println(" "+Arrays.toString(stringArr));
}
}
答案 9 :(得分:0)
建议使用Apache IOUtils.readLines。见下面的链接。
http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/IOUtils.html
答案 10 :(得分:0)
您可以使用此代码。这非常快!
public String[] loadFileToArray(String fileName) throws IOException {
String s = new String(Files.readAllBytes(Paths.get(fileName)));
return Arrays.stream(s.split("\n")).toArray(String[]::new);
}