На основе операции моделирования загрузить файл IO потоков

Во-первых, создать на стороне сервера

общественный  класс DownloadServer {
     общественного  статический  недействительный основной (String [] арг) бросает исключение { 
        ServerSocket сервер = новый новый в ServerSocket (55021 ),
         в то время как ( истина ) { 
            Оправа = server.accept (); 
            System.out.println ( «соединение установлено ! " );
             // создать персонаж , отправленный клиентом , чтобы принять входной поток объекта 
            BufferedReader бр = новый новый BufferedReader ( новый новый InputStreamReader (Socket.getInputStream ()));
             // создать объект выходного потока символов
            PrintWriter Pw = новый PrintWriter (socket.getOutputStream ()); 
            StringBuilder SBU = новый StringBuilder (); 
            Указатель на строку = br.readLine ();
            если (s.equals ( "изображение" )) {
                 // 创建文件对象 
                файл File = новый файл ( "Сервис" ); 
                Файл [] файлы = file.listFiles ();
                для (Файл F: файлы) { 
                    System.out.print (f.getName () + "\ т" ); 
                    sbu.append (f.getName () + ""  );
                }
                pw.println (SBU); 
                pw.flush (); 
                br.close (); 
                pw.close (); 
            } еще { 
                Файл = новый новый файл ( "-Service /" + S);
                 // создать двоичные объекты входного потока, читать файлы в каталоге 
                DataInputStream DIS = новый новый DataInputStream ( новый новый FileInputStream (файл));
                 // создать двоичный объект выходного потока, клиент отправляет данные 
                в DataOutputStream DOS = новые новые DataOutputStream (Socket.getOutputStream) ();
                 байт [] байт = новый новый байты [1024];
                 Int данных;
                 // прочитать каталог файла клиент выводит двоичный поток 
                в то время как ((= dis.read данных (байты)) = - 1.! ) { 
                    Dos.write (байты 0 , данные); 
                } 
                dos.close (); 
                dis.close (); 
                br.close (); 
                Socket.close (); 
            } 
        } 

    } 
}

Во-вторых, создать клиент

общественный  класс DownloadClient {
    статическое гнездо,
     общественный  статический  недействительный основной (String [] арг) бросает исключение { 
        Scanner ВХОД = новый новый сканер (System.in); 
        System.out.println ( .. «1. Изображение \ T2 видео \ Музыка T3 " ); 
        из System.out.print ( " Пожалуйста , выберите номер: " );
         INT NUM = input.nextInt ();
         переключатель (NUM) {
             случай . 1 : 
                String [] STR = GetName ();
                 для ( межд. 1 = I, I <= str.length; я ++ ) { 
                    из System.out.print (I + "" + СТР [1 -I.] + "\ Т" ); 
                } 
                из System.out.print ( «\ п-пожалуйста , выберите номер , который вы хотите загрузить изображение: " );
                 INT num2 = input.nextInt (); 
                загрузки (STR [num2 -1 ]);
                 BREAK ;
             Случай 2 :
                 BREAK ;
             случай . 3 :
                 BREAK ; 
        } 
    } 
    общественности  статической String [] GetName () бросает исключение {
        // Создание объекта сокета 
        сокет = новый новый сокет ( "127.0.0.1", 55021 ); 
        PrintWriter PW = новый новый PrintWriter (Socket.getOutputStream ()); 
        pw.println ( "Image" ); 
        pw.flush (); 
        // Получает сервер передачи данных через 
        к BufferedReader бр = новый новый BufferedReader ( новый новый InputStreamReader (Socket.getInputStream ())); 
        Строка S = br.readLine (); 
        br.close (); 
        pw.close (); 
        Socket.close (); 
        вернуться ДЕЛЕНИЕМ ( «» ); 
    } 
    публичного  статического  вакуумзагрузки (имя String) бросает исключение { 
        сокет = новый новый сокет ( "127.0.0.1", 55021 ), 
        в PrintWriter PW = NULL ; 
        DataInputStream DIS = NULL ; 
        в DataOutputStream DOS = NULL ;
         Попробовать {
             // создать выходной поток, и передается для загрузки название изображения 
            Pw = новый новый PrintWriter (Socket.getOutputStream ()); 
            pw.println (имя); 
            pw.flush (); 
            // принимает клиент послал двоичный поток 
            СОП = новый новыйDataInputStream (Socket.getInputStream ());
             // путь к файлу и режим записи для записи 
            DOS = новый новый DataOutputStream ( новый новый FileOutputStream ( "загрузки /" + имя, истина ));
             байт [] байт = новый новый  байт [1024 ] ;
             ИНТ данных;
             // прочитать двоичный поток и копируется 
            в то время - ((= dis.read данных (байт)) = 1.! {) 
                dos.write (байт 0 , данные); 
            } 

        } улов (Exception E) { 
            E .printStackTrace (); 
        } окончательно{
             Попробуйте { 
                dos.close (); 
                dis.close (); 
                pw.close (); 
                socket.close (); 
            } Задвижка (Исключение е) { 
                e.printStackTrace (); 
            } 
        } 
    } 
}

 

рекомендация

отwww.cnblogs.com/TFE-HardView/p/11098424.html