В принципе класс java.io.File представляет собой файл в файловой системе, но не содержит методы для работы с ними (кроме создавать их или удалять их)
Когда вы должны работать с ними, вы используете другие классы из пакета java.io, среди них BufferefReader и InputStreamReader, но таковыми являются другие, такие как FileInputStream.
В зависимости от операции, которую вы хотите выполнить, вы можете использовать считыватель или поток (классы, заканчивающиеся на «Reader» или «Writer», предназначены для текстового контента, классы, заканчивающиеся на «Stream», предназначены для двоичного содержимого, но, конечно, , вы всегда можете читать/писать текст как двоичный).
В большинстве случаев вам нужно «процедить» пару этих классов для выполнения работы. Также важно заметить, что в большинстве случаев вы можете иметь очень похожий код для записи в сокеты.
Наивный пример может быть таким:
package demo;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.ArrayList;
public class ReadLines {
public static void main(String [] args) throws IOException {
File toRead = new File(args[0]);
if(toRead.exists()) {
List<String> lines = readLines(toRead);
} else {
System.out.println(toRead.getName() + " doesn't exists");
}
}
private static List<String> readLines(File fromFile) throws IOException {
BufferedReader reader = null;
List<String> lines = new ArrayList<String>();
try {
reader = new BufferedReader(new FileReader(fromFile)); // chaining
String line = null;
while((line = reader.readLine()) != null) {
lines.add(line);
}
} finally {
// always close the file
if(reader != null) try {
reader.close();
} catch(IOException ioe) {
// it's ok to ignore an exception while closing a file
}
}
return lines;
}
}
Я надеюсь, что этот код, сделать его более понятным для вас и компилирует (
: PI не имеет компилятора под рукой
)
См также :
http://download.oracle.com/javase/tutorial/essential/io/ http://download.oracle.com/javase/6/docs/api/java/io/package-summary.html http://download.oracle.com/javase/6/docs/api/java/io/Reader.html http://download.oracle.com/javase/6/docs/api/java/io/Writer.html http://download.oracle.com/javase/6/docs/api/java/io/InputStream.html http://download.oracle.com/javase/6/docs/api/java/io/OutputStream.html
Хороший пример, но в блоке finally есть потенциальный NPE (читатель может быть пустым, если в новой строке BufferedReader ... возникает ошибка). –