
- •4.1.1. Потоки ввода-вывода
- •4.1.2. Класс IOException
- •4.2.1. Класс InputStream
- •4.2.2. Класс OutputStream
- •4.3. Символьный ввод-вывод
- •4.3.1. Класс Reader
- •4.3.2. Класс Writer
- •4.4.1. Класс InputStreamReader
- •4.4.2. Класс OutputStreamWriter
- •4.5.1. Класс BufferedReader
- •4.5.2. Класс BufferedWriter
- •4.5.3. Класс PrintStream
- •4.6.1. Классы для файлового ввода-вывода
- •4.6.2. Копирование бинарного файла
- •4.6.3. Обработка текстового файла
- •4.7.1. Класс File
- •4.7.2. Пример работы с файловой системой
Листинг 4.1. Копирование бинарного файла.
import java.io.*;
public class IOExample {
public static void main(String args[]) { FileInputStream in = null; FileOutputStream out = null;
int cnt = 0; try {
in = new FileInputStream("input.dat");
out = new FileOutputStream("output.dat"); int c;
while ((c = in.read()) != -1) { out.write(c);
cnt++;
}
out.flush();
} catch(FileNotFoundException e) {
System.err.println("Файл не найден."); } catch(Exception e) {
System.err.println("Исключение: " +
e.getMessage());
} finally {
System.out.println("Скопировано " + cnt + " байт."); if (in != null) {
try {
in.close();
} catch(Exception e) { System.err.println("Исключение: " +
e.getMessage());
}
}
if (out != null) { try {
out.close();
} catch(Exception e) { System.err.println("Исключение: " +
e.getMessage());
}
}
}
}
}
4.6.3. Обработка текстового файла
В листинге 4.2 представлена программа, преобразующая все символы текстового файла input.txt к верхнему регистру и записывающая их в файл output.txt.
Листинг 4.2. Обработка текстового файла.
import java.io.*;
public class IOExample {
public static void main(String args[]) { FileReader inputStream = null;
FileWriter outputStream = null; try {
inputStream = new FileReader("input.txt");
outputStream = new FileWriter("output.txt"); int c;
while ((c = inputStream.read()) != -1) { outputStream.write(Character.toUpperCase((char)c));
}
} catch(FileNotFoundException e) {
System.err.println("Файл не найден."); } catch(Exception e) {
System.err.println("Исключение: " + e.getMessage()); } finally {
if (inputStream != null) { try {
inputStream.close(); } catch(Exception e) {
System.err.println("Исключение: " + e.getMessage());
}
}
if (outputStream != null) { try {
outputStream.close(); } catch(Exception e) {
System.err.println("Исключение: " + e.getMessage());
}
}
}
}
}
4.7.Работа сфайловойсистемой
4.7.1. Класс File
Класс File предназначен для доступа к файлам и каталогам файловой системы.
|
Таблица 4.12. Некоторые конструкторы класса File. |
|
|
File(File parent, String child) |
Создаёт объект File на основе каталога, |
|
заданного объектом File, и имени файла, |
|
заданного строкой. |
File(String pathname) |
Создаёт объект File на основе пути к файлу. |
File(String parent, String child) |
Создаёт объект File на основе каталога и имени |
|
файла, заданного строками. |
|
Таблица 4.13. Методы класса File. |
|
|
boolean exists() |
Возвращает true, если файл существует. |
boolean canRead() |
Возвращает true, если файл доступен для |
|
чтения. |
boolean canWrite() |
Возвращает true, если файл доступен для |
|
записи. |
boolean createNewFile() |
Создаёт файл. Возвращает true, если создание |
|
прошло успешно. |
boolean mkdir() |
Создаёт каталог. Возвращает true, если |
|
создание прошло успешно. |
boolean delete() |
Удаляет файл или каталог. Возвращает true, |
|
если удаление прошло успешно. |
boolean renameTo(File dest) |
Переименовывает файл или каталог. |
|
Возвращает true, если переименование прошло |
|
успешно. |
boolean isDirectory() |
Возвращает true, если объект File представляет |
|
каталог. |
boolean isFile() |
Возвращает true, если объект File представляет |
|
файл. |
boolean isHidden() |
Возвращает true, если объект File представляет |
|
скрытый файл или каталог. |
long lastModified() |
Возвращает время последнего изменения |
|
файла или каталога. |
long length() |
Возвращает размер файла. |
File[] listFiles() |
Возвращает массив объектов File, |
|
представляющих файлы данного каталога. |
String[] list() |
Возвращает массив имён файлов данного |
|
каталога. |
String getAbsolutePath() |
Возвращает абсолютный путь к файлу. |
File getAbsoluteFile() |
Возвращает объект File, представляющий |
|
абсолютный путь к файлу. |
String getParent() |
Возвращает имя каталога, в котором находится |
|
данный файл или каталог. |
File getParentFile() |
Возвращает объект File, представляющий |
|
каталог, в котором находится данный файл или |
|
каталог. |
4.7.2. Пример работы с файловой системой
В листинге 4.3 представлена программа, рекурсивно перечисляющая все файлы и каталоги заданного каталога и его подкаталогов.
Листинг 4.3. Работа с файловой системой.
import java.io.*;
public class FileExample {
public static void printSubDir(File currentDir) {
System.out.println(currentDir.getAbsolutePath()); if(currentDir.isDirectory()) {
File children[] = currentDir.listFiles(); for(int i = 0; i < children.length; i++)
printSubDir(children[i]);
}
}
public static void main(String args[]) throws IOException { BufferedReader in = new BufferedReader(
new InputStreamReader(System.in));
System.out.println("Введите имя каталога:"); printSubDir(new File(in.readLine()));
}
}