在Java中可以使用Socket來實(shí)現(xiàn)服務(wù)器之間的文件拷貝。以下是一個簡單的示例代碼:
import java.io.*;
import java.net.Socket;
public class FileCopyClient {
public static void main(String[] args) {
try {
Socket socket = new Socket("serverIpAddress", 1234);
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = new FileOutputStream("destinationFilePath");
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
outputStream.close();
inputStream.close();
socket.close();
System.out.println("File copied successfully");
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上面的代碼中,首先建立一個Socket連接到目標(biāo)服務(wù)器,然后創(chuàng)建輸入流從服務(wù)器讀取文件內(nèi)容,并創(chuàng)建輸出流將文件內(nèi)容寫入目標(biāo)文件。最后關(guān)閉流和連接,完成文件拷貝操作。
在服務(wù)器端也需要相應(yīng)的代碼來處理文件傳輸,以下是一個簡單的服務(wù)器端代碼示例:
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class FileCopyServer {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(1234);
Socket socket = serverSocket.accept();
InputStream inputStream = new FileInputStream("sourceFilePath");
OutputStream outputStream = socket.getOutputStream();
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
outputStream.close();
inputStream.close();
socket.close();
serverSocket.close();
System.out.println("File copied successfully");
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上面的代碼中,首先創(chuàng)建一個ServerSocket監(jiān)聽指定端口,然后等待客戶端連接。一旦有客戶端連接,就創(chuàng)建輸入流從源文件讀取內(nèi)容,并創(chuàng)建輸出流將內(nèi)容寫入到客戶端。最后關(guān)閉流、連接和ServerSocket,完成文件傳輸操作。
需要注意的是,以上代碼只是一個簡單的示例,實(shí)際應(yīng)用中可能還需要考慮文件大小、傳輸速度、網(wǎng)絡(luò)穩(wěn)定性等因素。