| |
-------------------
// main
// Метод, получающий управление при запуске приложения
// -------------------------------------------------------
public static void main(String args[])
{
// Массив для ввода строки с клавиатуры
byte bKbdInput[] = new byte[256];
// Введенная строка
String sIn;
// Строка адреса URL
String sURL;
// Адрес URL удаленного узла
URL u;
// Рабочий буфер для копирования файла
byte buf[] = new byte[1024];
try
{
// Вводим адрес URL удаленного узла
System.out.println("Enter remote host name...");
System.in.read(bKbdInput);
sIn = new String(bKbdInput, 0);
// Обрезаем строку, удаляя символ конца строки
StringTokenizer st;
st = new StringTokenizer(sIn, "\r\n");
sURL = new String((String)st.nextElement());
// Создаем объект класса URL
u = new URL(sURL);
// Создаем входной поток, связанный с объектом,
// адрес URL которого хранится в поле u
InputStream is = u.openStream();
// Создаем выходной буферизованный форматированный
// поток для записи принятого файла
DataOutputStream os = new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream("output.dat")));
// Выполняем в цикле чтение файла, расположенного
// по адресу u, копируя этот файл в выходной поток
while(true)
{
int nReaded = is.read(buf);
if(nReaded == -1)
break;
os.write(buf, 0, nReaded);
}
// Закрываем входной и выходной потоки
is.close();
os.close();
System.out.println("File received");
}
catch(Exception ioe)
{
System.out.println(ioe.toString());
}
try
{
System.out.println("Press to terminate...");
System.in.read(bKbdInput);
}
catch(Exception ioe)
{
System.out.println(ioe.toString());
}
}
}
Описание исходного текста
Сразу после запуска приложение запрашивает с консоли текстовую строку адреса
URL файла, который необходимо переписать через сеть на локальный диск. После
удаления символа перевода строки адрес записывается в поле sURL.
Далее приложение создает объект класса URL, соответствующий введенному
адресу:
u = new URL(sURL);
На следующем этапе для объекта URL создается входной поток, для чего
вызывается метод openStream:
InputStream is = u.openStream();
Идентификатор этого потока сохраняется в поле is.
Принятый файл будет записан в текущий каталог под именем output.dat. Для
этого мы создаем входной буферизованный форматированный поток os, как это
показано ниже:
DataOutputStream os = new Data
|
|