2015-04-03 3 views
-3

Я делаю клиентскую серверную программу, в которой клиент запрашивает имя файла на сервер и сервер, и ищет этот файл, а затем отправляет этот файл клиенту, если он найден. В моем случае сервер - это мой компьютер. Итак, есть ли какой-либо метод, с помощью которого я могу искать этот файл на моем компьютере за меньшее время.Можем ли мы искать имя файла на всем компьютере с помощью java

+0

можно дублировать http://stackoverflow.com/questions/15624226/java-search-for-files-in-a-directory – Anarki

+0

Но я не хочу вводить имя каталога – rocky

+0

Итак, установите корневой каталог по умолчанию. – pomkine

ответ

0

это пример для TCP сервера в Java:

public class TCPServer { 

public static void main(String argv[]) { 
    String clientSentence; 
    //String capitalizedSentence; 
    ServerSocket welcomeSocket = null; 
    int port = 0; 

    try { 
     //port = Integer.valueOf(argv[0]); 
     port = 6868; 
    } catch (ArrayIndexOutOfBoundsException aio) { 
     System.out.println("Insert port"); 
     System.exit(1); 
    } catch (NumberFormatException nfe) { 
     System.out.println("Argument must be a number"); 
     System.exit(1); 
    } 
    try { 
     welcomeSocket = new ServerSocket(port); 
     System.out.println("started TCP listening on " + String.valueOf(port)); 
    } catch (IOException ioe) { 
     System.out.println("Could not listen on TCP port = " + String.valueOf(port)); 
     ioe.printStackTrace(); 
    } 

    try { 
     if (welcomeSocket != null) { 
      while (true) { 
       Socket connectionSocket = welcomeSocket.accept(); 
       System.out.println("connected-----------------------"); 
       BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); 
       DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream()); 
       while ((clientSentence = inFromClient.readLine()) != null) { 
        System.out.println("File name: " + clientSentence); 
        if (clientSentence.equals("filename")) { 
         outToClient.writeBytes("this file exists\n"); 
        } 
       } 
       inFromClient.close(); 
       connectionSocket.close(); 
       System.out.println("Disconnected-------------------"); 
      } 
     } 
    } catch (IOException ioe) { 
     ioe.printStackTrace(); 
    } finally { 
     try { 
      welcomeSocket.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
} 

это клиент для отправки файла и прослушивания сервера reply.For Пример пути к файлу, который вы нашли по имени файла:

public class TCPRequester { 
public static String sendRequestToServer(String serverIp, int serverPort, String command) throws Exception { 

    StringBuilder result = new StringBuilder(); 
    // Create input and output streams to read from and write to the server 

    Socket socket = new Socket(serverIp, serverPort);// Connect to the server 
    PrintStream out = new PrintStream(socket.getOutputStream()); // Create output streams to write to the server 
    BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));//Create input streams to read from the server 
    out.write(command.getBytes()); 

    // Read data from the server until we finish reading the document 
    String line; 
    while ((line = in.readLine()) != null) { 
     result.append(line); 
     System.out.println(line); 
    } 
    System.out.println("finished response"); 

    // Close our streams 
    in.close(); 
    out.close(); 
    socket.close(); 

    return result.toString(); 
} 


public static void main(String[] args) { 
    try { 
     System.out.println(sendRequestToServer("localhost", 6868, "filename\n")); 
    } catch (Exception ex) { 
     Logger.getLogger(TCPRequester.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 
}