我先在Client端读取了Emplist.xml文件,然后转换为字节流传输给Server端,再让Server端接收并读取,然后再写出到一个新的文件EmpList。但为什么文件里没有东西。如图:
在while里对bos要用flush()。因为你写的东西还缓存在缓冲区,没有写到存储器上。所以文件里看不到东西。
首先确定客户端东西写过来了吗?在客户端和服务端都别忘了刷新,,对于字符流 用bufferedread和printwrite更好点。
我感觉用字节流比较好,
public class TransportFileClient
{
public static void main(String[] args)
{
System.out.println("Hello World!");
Socket socket;
//链接服务器
try{
socket = new Socket("localhost",8088);
BufferedInputStream bis = new BufferedInputStream(
new FileInputStream("TransportFile.xml"));
BufferedOutputStream bos = new BufferedOutputStream(
socket.getOutputStream());
byte[] buffer = new byte[1024];
int len = 0;
while((len=bis.read(buffer)) != -1){
bos.write(buffer,0,len);
}
bos.flush();
socket.close();
System.out.println("传输完成!");
}catch(UnknownHostException uhe){
uhe.printStackTrace();
}catch(IOException ioe){
ioe.printStackTrace();
}
}
}
public class TransportFileServer
{
public static void main(String[] args)
{
System.out.println("Hello World!");
ServerSocket server;
Socket socket;
//打开server端口
try{
server = new ServerSocket(8088);
socket = server.accept();
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream("TransportFile副本"));
BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
byte[] buffer = new byte[1024];
int len = 0;
while((len=bis.read(buffer)) != -1){
bos.write(buffer,0,len);
}
bos.flush();
socket.close();
System.out.println("传输完成");
}catch(IOException e){
e.printStackTrace();
}
}
}