您的位置:首页 > 编程语言 > Java开发

java实现远程文件的读取

2010-07-09 01:05 495 查看
客户端:
package com.test.plainclass;import java.io.*;import java.net.*;public class RemoteFileClient {protected String hostIp;protected int hostPort;protected BufferedReader socketReader;protected PrintWriter socketWriter;public static void main(String[] args) {RemoteFileClient remoteFileClient = new RemoteFileClient("127.0.0.1",3000);remoteFileClient.setUpConnection();String fileContents = remoteFileClient.getFile("E:test.txt");remoteFileClient.tearDownConnection();System.out.println(fileContents);}// ==========================public RemoteFileClient(String aHostIp, int aHostPort) {hostIp = aHostIp;hostPort = aHostPort;}// ===========================public void setUpConnection() {try {Socket client = new Socket(hostIp, hostPort);socketReader = new BufferedReader(new InputStreamReader(client.getInputStream()));socketWriter = new PrintWriter(client.getOutputStream());} catch (UnknownHostException e) {System.out.println("Error setting up socket connection: unknown host at "+ hostIp + ":" + hostPort);} catch (IOException e) {System.out.println("Error setting up socket connection: " + e);}}// =============================public String getFile(String fileNameToGet) {StringBuffer fileLines = new StringBuffer();try {socketWriter.println(fileNameToGet);socketWriter.flush();String line = null;while ((line = socketReader.readLine()) != null)fileLines.append(line + "/n");} catch (IOException e) {System.out.println("Error reading from file: " + fileNameToGet);}return fileLines.toString();}// ========================public void tearDownConnection() {try {socketWriter.close();socketReader.close();} catch (IOException e) {System.out.println("Error tearing down socket connection: " + e);}}// =========================}

服务器端:
package com.test.plainclass;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.BindException;import java.net.ServerSocket;import java.net.Socket;public class RemoteFileServer {protected int listenPort = 3000;public static void main(String[] args) {RemoteFileServer server = new RemoteFileServer();server.acceptConnections();}public void acceptConnections() {try {ServerSocket server = new ServerSocket(listenPort);Socket incomingConnection = null;while (true) {incomingConnection = server.accept();handleConnection(incomingConnection);}} catch (BindException e) {System.out.println("Unable to bind to port " + listenPort);} catch (IOException e) {System.out.println("Unable to instantiate a ServerSocket on port: "+ listenPort);}}public void handleConnection(Socket incomingConnection) {try {//OutputStream outputToSocket = incomingConnection.getOutputStream();InputStream inputFromSocket = incomingConnection.getInputStream();BufferedReader streamReader = new BufferedReader(new InputStreamReader(inputFromSocket));FileReader fileReader = new FileReader(new File(streamReader.readLine()));BufferedReader bufferedFileReader = new BufferedReader(fileReader);PrintWriter streamWriter = new PrintWriter(incomingConnection.getOutputStream());String line = null;while ((line = bufferedFileReader.readLine()) != null) {streamWriter.println(line);}fileReader.close();streamWriter.close();streamReader.close();} catch (Exception e) {System.out.println("Error handling a client: " + e);}}}


先运行服务器端,再运行客户端,就可以得到远程文件的输出内容了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: