Ник, ты только что дал нам последний кусочек головоломки. Если вы знаете количество строк, которые вы будете читать, вы можете просто определить массив этой длины, прежде чем читать файл.
Что-то типа...
String[] wordArray = new String[10];
int index = 0;
String word = null; // word to be read from file...
// Use buffered reader to read each line...
wordArray[index] = word;
index++;
Честно говоря, этот пример мало что будет значить, поэтому я сделал эти два примера.
Первый использует концепцию, предложенную Алексом, которая позволяет прочитать неизвестное количество строк из файла.
Единственная ошибка, если строки разделены более чем одной строкой (т.е. между словами есть дополнительная строка)
public static void readUnknownWords() {
// Reference to the words file
File words = new File("Words.txt");
// Use a StringBuilder to buffer the content as it's read from the file
StringBuilder sb = new StringBuilder(128);
BufferedReader reader = null;
try {
// Create the reader. A File reader would be just as fine in this
// example, but hay ;)
reader = new BufferedReader(new FileReader(words));
// The read buffer to use to read data into
char[] buffer = new char[1024];
int bytesRead = -1;
// Read the file to we get to the end
while ((bytesRead = reader.read(buffer)) != -1) {
// Append the results to the string builder
sb.append(buffer, 0, bytesRead);
}
// Split the string builder into individal words by the line break
String[] wordArray = sb.toString().split("\n");
System.out.println("Read " + wordArray.length + " words");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
reader.close();
} catch (Exception e) {
}
}
}
Второй демонстрирует, как читать слова в массив известной длины. Это, вероятно, ближе к тому, что вы на самом деле хотите
public static void readKnownWords()
// This is just the same as the previous example, except we
// know in advance the number of lines we will be reading
File words = new File("Words.txt");
BufferedReader reader = null;
try {
// Create the word array of a known quantity
// The quantity value could be defined as a constant
// ie public static final int WORD_COUNT = 10;
String[] wordArray = new String[10];
reader = new BufferedReader(new FileReader(words));
// Instead of reading to a char buffer, we are
// going to take the easy route and read each line
// straight into a String
String text = null;
// The current array index
int index = 0;
// Read the file till we reach the end
// ps- my file had lots more words, so I put a limit
// in the loop to prevent index out of bounds exceptions
while ((text = reader.readLine()) != null && index < 10) {
wordArray[index] = text;
index++;
}
System.out.println("Read " + wordArray.length + " words");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
reader.close();
} catch (Exception e) {
}
}
}
Если вы найдете какой-либо из них полезным, я бы присвоил его, вы бы проголосовали за меня и проверили ответ Алекса как правильный, поскольку это его идея, которую я адаптировал.
Теперь, если вы действительно параноик о том, какой разрыв строки использовать, вы можете найти значения, используемые системой, через значение System.getProperties().getProperty("line.separator")
.
person
MadProgrammer
schedule
24.08.2012
print
массивом? И в чем проблема, с которой вы столкнулись? - person Sujay   schedule 24.08.2012