初学者Java程序员。我在互联网上搜索了一段时间没有取得多大成功。
我需要读取文本文件并将每行存储到字符串数组中。但是我不知道文本文件有多大,因此我试图找出一种动态分配字符串数组大小的简单方法。我不知道我可以使用的Java库中是否有一个方便的工具。我想可能首先计算文件中的总行数,然后分配字符串数组,但我也不知道最好的方法。
感谢您的任何意见!
答案 0 :(得分:1)
您可以使用ArrayList
而不用担心调整大小:
List<String> fileLines = new ArrayList<String>();
try (BufferedReader br = new BufferedReader(new FileReader(file)))
{
String line;
while ((line = br.readLine()) != null)
fileLines.add(line);
}
fileLines
可能变得非常大,但如果你对此感到满意,那么这是一个简单的入门方法。
答案 1 :(得分:1)
定义一个不需要固定长度的数组列表,因为您可以根据需要添加或删除任意数量的元素:
List<String> fileList = new ArrayList<String>();
//Declare a file at a set location:
File file = new File("C:\\Users\\YourPC\\Desktop\\test.txt");
//Create a buffered reader that reads a file at the location specified:
try (BufferedReader br = new BufferedReader(new FileReader(file)))
{
String line;
//While there is something left to read, read it:
while ((line = br.readLine()) != null)
//Add the line to the array-list:
fileList.add(line);
}catch(Exception e){
//If something goes wrong:
e.printStackTrace();
}
//Determine the length of the array-list:
int listTotal = fileList.size();
//Define an array of the length of the array-list:
String[] fileSpan = new String[listTotal];
//Set each element index as its counterpart from the array-list to the array:
for(int i=0; i<listTotal; i++){
fileSpan[i] = fileList.get(i);
}
答案 2 :(得分:0)
如果您只想在Java8 +中使用工作程序(而不是在编码和调试中练习):
String[] ary = java.nio.file.Files.readAllLines(Paths.get(filename)).toArray(new String[0]);
// substitute the (Path,Charset) overload if your data isn't compatible with UTF8
// if a List<String> is sufficient for your needs omit the .toArray part