基于java实现网络上简单的文件拷贝

要求:

借助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();
	}

}
其实服务端和客户端的实现代码是很相似的,都是先读再写,一个是从文件上读写到网络上,一个是从网络上读写到文件上,通过Socket完成对两台主机的信息传输。如果只想拷贝自己本机的文件到自己电脑上,只需要获取一个输入流和一个输出流,先读再写就行了,不需要借助Socket。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java文件夹复制(远程复制(网络传输),用于远程备份文件)(支持文件夹,嵌套子文件夹) import java.io.*; import java.util.*; public class FileSelection { private File rootDirectory;//根目录 private File[] fileList;//文件目录下面的文件列表(包括目录,用于多次判断) private ArrayList fileArrayList; // 用于存储文件(只是文件)列表 //初始化参数 public FileSelection() { fileArrayList=new ArrayList(); rootDirectory = new File("Test"); rootDirectory.mkdir(); } //获得文件(不包括目录)的列表 public void initFileArrayList() { if (rootDirectory.isDirectory()) { //遍历目录下面的文件和子目录 fileList = rootDirectory.listFiles(); for (int i = 0; i < fileList.length; i++) { //如果是文件,添加到文件列表中 if(fileList[i].isFile()){ fileArrayList.add(fileList[i]); } //否则递归遍历子目录 else if (fileList[i].isDirectory()) { fileList[i].mkdir(); rootDirectory=fileList[i]; initFileArrayList(); } } } } //将文件信息添加到列表中 public void addFiles(File f){ fileArrayList.add(f); } //访问器返回文件列表 public ArrayList getFileArrayList() { return fileArrayList; } } -------------------- BackupClient.java package com.xinxin.Client; import java.io.*; import java.net.*; /** * * @author Administrator *@version 1.0 *BackupClient类实现文件的传输到服务器 */ public class BackupClient implements Runnable{ private int port;//服务器端口 private InetAddress ipAddress;//服务器IP地址 private Socket clientSocket;//客户端套接字 private InputStream inputStream;//网络输入流 private OutputStream outputStream;//网络输出流 private File file; //构造函数(获得服务器端IP地址和监听端口号) public BackupClient(InetAddress ipAddress,int port,File file){ this.ipAddress=ipAddress; this.port=port;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值