2017-01-20 1 views
0

Как сделать файлы на сервере отображаемыми в списке и указать число за ним и нажать его номер и загрузить, вставив его номер?Создание FTP-сервера в java, но перечисление его файлов

Дело торгует файлами с моей самости, что момент я могу, но список файлов, которые я имею в каталоге я наклоняюсь, я уже могу скачивать файлы (то будет главной точкой)

int porto = 21; 
String IP = "x.x.x.x"; 

public Client() { 
    String destinyfile = "directory"; 
try { 
    Socket MyClient = new Socket(IP, porto); 
    DataInputStream input = new DataInputStream(MyClient.getInputStream()); 
    DataOutputStream output = new DataOutputStream(MyClient.getOutputStream());       
    System.out.println(input.readUTF()); 
    String arquivo = JOptionPane.showInputDialog("Insert the name of the file"); 
    output.writeUTF(arquivo); 
    ObjectInputStream in = new ObjectInputStream(MyClient.getInputStream()); 
    String fileName = in.readUTF(); 

    if(fileName != null){ 
     long size = in.readLong(); 
     System.out.println("Processing the file: " + fileName + " - "+ size + " bytes."); 
     File file = new File(destinyfile); 
     if(file.exists() == false){ 
      file.mkdir(); 
     } 
     FileOutputStream fos = new FileOutputStream(caminhoDestino + fileName); 
     byte[] buf = new byte[4096]; 
     while (true) { 
      int len = in.read(buf); 
      if (len == -1) 
       break; 
      fos.write(buf, 0, len); 
     }   
     fos.flush(); 
     fos.close(); 
    } 
    System.out.println(input.readUTF()); 
    MyClient.close(); 
} catch (Exception e) { 

Сервер

int port = 21; 

public Servidor() { 
    try { 
     ServerSocket ss = new ServerSocket(port); 


     String caminho = "directory"; 

     while (true) { 

      System.out.println("Waiting user."); 
      Socket socket = ss.accept(); 
      DataInputStream input = new DataInputStream(socket.getInputStream()); 
      DataOutputStream output = new DataOutputStream(socket.getOutputStream()); 


      output.writeUTF("Welcome");    
      String arq = input.readUTF(); 
      System.out.println("File: " + arq); 
      File file = new File(caminho + arq); 

      if(file.exists()){ 

       ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream()); 
       System.out.println("Transfering file: " + file.getName()); 
       out.writeUTF(file.getName()); 
       out.writeLong(file.length()); 
       FileInputStream filein = new FileInputStream(file); 
       byte[] buf = new byte[4096]; 

       while (true) { 
        int len = filein.read(buf); 
        if (len == -1) 
        break; 
        out.write(buf, 0, len); 
       } 
       out.close(); 
       output.writeUTF("File Sent:"); 
      }else{ 
       output.writeUTF("File doesnt exist!"); 
      } 
     ss.close(); 
     } 
    } catch (Exception e) { 

ответ

0

Если вы создаете File объект для родительского каталога файлов, которые вы хотите перечислить, вы можете вызвать для этого объекта listFiles(), чтобы получить массив F ile в этом каталоге.

E.g.

File parent = new File("/data/folder/"); 

for (File child : parent.listFiles()) { 
    System.out.println(child.getName()); 
} 
Смежные вопросы