Я делаю клиентскую серверную программу, в которой клиент запрашивает имя файла на сервер и сервер, и ищет этот файл, а затем отправляет этот файл клиенту, если он найден. В моем случае сервер - это мой компьютер. Итак, есть ли какой-либо метод, с помощью которого я могу искать этот файл на моем компьютере за меньшее время.Можем ли мы искать имя файла на всем компьютере с помощью java
-3
A
ответ
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);
}
}
}
можно дублировать http://stackoverflow.com/questions/15624226/java-search-for-files-in-a-directory – Anarki
Но я не хочу вводить имя каталога – rocky
Итак, установите корневой каталог по умолчанию. – pomkine