IO流读取文件,传输文件过程
服务器:SreverUtil类
package com.lanou.homework.util;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class SreverUtil {
public void start() {
Socket s=null;
try {
ServerSocket socket = new ServerSocket(10086);
s = socket.accept();
File[] f = getFiles();
sendFileList(s,f);
int num=getBookNum(s);
sendFileContent(s,f,num);
} catch (IOException e) {
e.printStackTrace();
}finally {
this.close(s);
}
}
private File[] getFiles() {
File f = new File("F:/电子书");
if (!f.exists()) {
return null;
}
if (!f.isDirectory()) {
return null;
}
return f.listFiles();
}
private void sendFileList(Socket s,File[] f) {
try {
PrintWriter pw = new PrintWriter(s.getOutputStream());
if (f == null) {
pw.println("终止");
pw.flush();
return;
}else {
for (int i = 0; i < f.length; i++) {
pw.println(i+":"+f[i].getName());
pw.flush();
}
pw.println("终止");
pw.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
private int getBookNum(Socket s) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String str = br.readLine();
Integer result = Integer.parseInt(str);
return result;
} catch (IOException e) {
e.printStackTrace();
}
return -1;
}
private void sendFileContent(Socket s,File[] f,int num) {
PrintWriter pw = null;
BufferedReader br = null;
try {
pw = new PrintWriter(s.getOutputStream());
br = new BufferedReader(new FileReader(f[num]));
String str ;
while((str=br.readLine())!=null) {
pw.println(str);
pw.flush();
}
pw.println("完毕");
pw.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void close(Socket s) {
try {
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
客户端:ClientUtil类
package com.lanou.homework.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class ClientUtil {
public void start() {
Socket s=null;
try {
s =new Socket("127.0.0.1",10086);
receiveFileList(s);
sendFileNum( s,getFileNum());
ReciveFileContent(s);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private void receiveFileList(Socket s) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String str;
while(!(str=br.readLine()).equals("终止")) {
System.out.println(str);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private int getFileNum() {
System.out.println("请输入编号:");
Scanner scanner = new Scanner(System.in);
return scanner.nextInt();
}
private void sendFileNum(Socket s,int num) {
try {
PrintWriter pw = new PrintWriter(s.getOutputStream());
pw.println(num);
pw.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void ReciveFileContent(Socket s) {
BufferedReader br;
try {
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String str;
while(!(str=br.readLine()).equals("完毕")) {
System.out.println(str);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
调用:TCPServer
package com.lanou.homework;
import com.lanou.homework.util.SreverUtil;
public class TCPServer {
public static void main(String[] args) {
SreverUtil ss = new SreverUtil();
ss.start();
}
}
调用:TCPClient
package com.lanou.homework;
import com.lanou.homework.util.ClientUtil;
public class TCPClient {
public static void main(String[] args) {
ClientUtil cu = new ClientUtil();
cu.start();
}
}