Javaを使ったLAN経由のファイル転送
JavaでLANファイルを転送するには、ソケットプログラミングを使用できます。以下に簡単なサンプルコードを示します。
- 指定したポートでリッスンしてファイルを格納するサーバの作成
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class FileServer {
public static void main(String[] args) {
int port = 12345; // 指定监听的端口
try (ServerSocket serverSocket = new ServerSocket(port)) {
System.out.println("Server is listening on port " + port);
while (true) {
Socket socket = serverSocket.accept();
System.out.println("Accepted connection from client: " + socket.getInetAddress());
try (InputStream inputStream = socket.getInputStream();
FileOutputStream fileOutputStream = new FileOutputStream("received_file.txt")) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, bytesRead);
}
System.out.println("File received successfully.");
} catch (IOException e) {
System.out.println("Error receiving file: " + e.getMessage());
}
}
} catch (IOException e) {
System.out.println("Server error: " + e.getMessage());
}
}
}
- サーバに接続してファイルを転送するクライアントを作成します。
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
public class FileClient {
public static void main(String[] args) {
String serverAddress = "192.168.1.100"; // 服务器的IP地址
int port = 12345; // 服务器监听的端口
String fileToSend = "file_to_send.txt"; // 要发送的文件名
try (Socket socket = new Socket(serverAddress, port);
FileInputStream fileInputStream = new FileInputStream(fileToSend);
OutputStream outputStream = socket.getOutputStream()) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fileInputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
System.out.println("File sent successfully.");
} catch (IOException e) {
System.out.println("Client error: " + e.getMessage());
}
}
}
実行時はまずサーバ側を起動してからクライアント側を起動します。クライアント側は指定したファイルをサーバ側に送信し、送信に成功した旨をコンソールに表示します。サーバ側はファイルを同じディレクトリに「received_file.txt」という名前で保存します。
実際の利用では、必要に応じて拡張および改善する必要があるため、上記のサンプルコードは単に最も基本的なファイル転送機能のデモであり、ファイルの安全性、進捗更新、転送エラー処理などの側面は考慮されていないことに注意してください。