要求:
借助java完成将一台电脑上的文件完整拷贝到另一台电脑上
程序实现:
服务端:
将需要上传的文件先从本地电脑文件上读取然后拷贝到网络上
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class FileServer {
public static void main(String[] args) throws IOException {
//绑定客户端电脑的端口
ServerSocket server=new ServerSocket(6789);
System.out.println("服务已启动");
Socket s=server.accept();
System.out.println("客户端"+s.getInetAddress().getHostAddress()+"已连接");
//获取基于Socket的输出流
OutputStream os=s.getOutputStream();
DataOutputStream dos=new DataOutputStream(os);
//获取需要上传的文件地址(必须要是文件的地址,不能是目录)
//输入输出流都是基于文件来操作的
File source=new File("F:\\CloudMusic\\xxx.mp3");
//获取文件的输入流
FileInputStream fis=new FileInputStream(source);
//开始拷贝
byte [] b=new byte[1024];
int len=0;
System.out.println("开始传输...");
while((len=fis.read(b))!=-1){
dos.write(b, 0, len);
}
System.out.println("传输完成");
//关闭流
dos.close();
fis.close();
}
}
客户端
先读取服务端传到网络上的数据,然后拷贝到用户指定的文件处
import java.io.DataInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public static void main(String[] args) throws UnknownHostException, IOException {
//得到本机的ip地址和端口号
Socket s=new Socket("192.168.4.155",6666);
//获取基于Socket的输入流
InputStream is=s.getInputStream();
DataInputStream dis=new DataInputStream(is);
//得到一个文件用来存放你需要下载的数据(文件后缀名不要改动,以免打不开)
//就是你想要下载到的位置
File f=new File("d:\\test2\\.yyy.mp3");
//获取文件输出流
FileOutputStream fos=new FileOutputStream(f);
//开始拷贝
byte [] b=new byte[1024];
int len=0;
while((len=dis.read(b))!=-1){
fos.write(b, 0, len);
}
//关闭流
fos.close();
dis.close();
s.close();
}
}