При запуске этой программы укажите имя исходного файла
и целевого файла(в который будет выполняться копирование).
Например, чтобы скопировать файл с именем FIRST.TXT
в файл с именем SECOND.TXT, используйте следующую командную строку
java CopyFile FIRST.TXT SECOND.TXT
*/
import java.io.*;
class CopyFile {
public static void main(String args[]) throws IOException
{
int i;
FileInputStream fin;
FileOutputStream fout;
try {
// Открыть файл для ввода
try {
fin = new FileInputStream(args[0]);
}
catch(FileNotFoundException e) {
System.out.println("Исходный файл не найден");
return;
}
// Открыть файл для вывода
try {
fout = new FileOutputStream(args[1]);
}
catch(FileNotFoundException e) {
System.out.println("Ошибка открытия выходного файла");
return;
}
}
catch(ArrayIndexOutOfBoundsException e) {
System.out.println("CopyFile копирует исходный файл в выходной");
return;
}
// Копировать файл
try {
do {
i = fin.read();
if(i != -1)
fout.write(i);
}
while(i != -1);
}
catch(IOException e) {
System.out.println("Файловая ошибка");
}
fin.close();
fout.close();
}
}
Обратите внимание на способ обработки потенциальных ошибок ввода/вывода в этой и в предыдущей программе. В отличие от большинства других машинных языков, включая С и С++, которые используют коды ошибки, чтобы сообщать о файловых ошибках, Java используют собственный механизм обработки особых ситуаций (исключений). Это не только делает обработку файла более ясной, но и позволяет во время ввода легко отличить состояние конца файла от файловых ошибок. В C/C++ многие функции ввода возвращают одно и то же значение, когда происходит ошибка и когда достигнут конец файла (т. е. в C/C++ признак конца файла (EOF) часто отображается в то же значение, что и ошибка ввода). Это обычно означает, что программист должен включить в код дополнительные операторы для того, чтобы определить, что же фактически произошло. В Java ошибки передаются в вашу программу через исключения, а не через значения, возвращаемые методом read(). Таким образом, когда read() возвращает — 1, это означает только одно — при чтении встретился конец файла.