有跡象表明,你可以考慮幾種選擇。
選項1,每次調整的數組,你得到一個溢出
private static final int INITIAL_SIZE = 10;
private static final int INCREMENT = 5;
String[] lines = new String[INITIAL_SIZE];
int amountOfLinesRead = 0;
// loop until end of file
// read line
if(amountOfLinesRead == lines.length) {
lines = resizeArray(lines);
}
lines[amountOfLinesRead++] = line;
public String[] resizeArray(final String[] originalArray) {
// create bigger array
String[] newArray = new String[originalArray.length + INCREMENT];
// copy array
for(int amountOfLinesCopied = 0; amountOfLinesCopied < originalArrayString.length ; amountOfLinesCopied++) {
newArray[amountOfLinesCopied] = originalArray[amountOfLinesCopied];
}
return newArray;
}
選項2.經過文件兩次,一次爲多少行計數,一次用於加工線
int amountOfLines;
// read lines until end of file is reached
amountOfLines ++;
// create array
String[] lines = new String[amountOfLines];
// loop again
// put lines in the array
選項3.添加標題行到包含一些元數據的文件中,在這種情況下行數(這並不少見)
// read first line of file
// get the amountOfRecords field from the line
String[] lines = new String[amountOfRecords]
int amountOfLinesInArray = 0;
// loop through file till end of file
if(amountOfLinesInArray >= amountOfRecords) {
// error! header information was corrupt!
} else {
lines[amountOfLinesInArray++] = line;
}
是的,你可以先閱讀整個文件計數線,創建一個數組,然後循環數據重讀。 – 2014-10-07 06:54:55
或者您可以將數組設置爲較大的任意長度,用'nulls'填充它。如果它不夠大請使用'Array.copyOf' – 2014-10-07 06:56:45
這是一個正確的方法嗎?這只是代碼的一部分。 int arrayl = 0; String [] items = new String [arrayl] ;; 而(inputFile.hasNextLine()){ \t arrayl ++; } – danny 2014-10-07 07:07:14