精华内容
下载资源
问答
  • 本文实例为大家分享了java将一个目录下的所有数据复制到另一个目录下的具体代码,供大家参考,具体内容如下/*将"C:\\JavaProducts\\Source"下的所有数据复制到"C:\\Target"下*/import java.io.*;public class ...

    本文实例为大家分享了java将一个目录下的所有数据复制到另一个目录下的具体代码,供大家参考,具体内容如下

    /*

    将"C:\\JavaProducts\\Source"下的所有数据复制到"C:\\Target"下

    */

    import java.io.*;

    public class JavaCopyDemo{

    final static String SOURCESTRING = "C:\\JavaProducts\\Source";

    final static String TARGETSTRING = "C:\\Target";

    public static void main(String[] args){

    if(!(new File(SOURCESTRING)).exists()){

    System.out.println("源文件" + SOURCESTRING + "不存在,无法复制!");

    return;

    }else if((new File(TARGETSTRING)).exists()){

    System.out.println("目标文件" + TARGETSTRING + "已经存在,无法复制!");

    return;

    }else{

    if((new File(SOURCESTRING)).isFile()){

    copyFile(new File(SOURCESTRING),new File(TARGETSTRING));

    }else if((new File(SOURCESTRING)).isDirectory()){

    copyDirectory(SOURCESTRING,TARGETSTRING);

    }

    }

    }

    private static void copyFile(File sourceFile,File targetFile){

    if(!sourceFile.canRead()){

    System.out.println("源文件" + sourceFile.getAbsolutePath() + "不可读,无法复制!");

    return;

    }else{

    System.out.println("开始复制文件" + sourceFile.getAbsolutePath() + "到" + targetFile.getAbsolutePath());

    FileInputStream fis = null;

    BufferedInputStream bis = null;

    FileOutputStream fos = null;

    BufferedOutputStream bos = null;

    try{

    fis = new FileInputStream(sourceFile);

    bis = new BufferedInputStream(fis);

    fos = new FileOutputStream(targetFile);

    bos = new BufferedOutputStream(fos);

    int len = 0;

    while((len = bis.read()) != -1){

    bos.write(len);

    }

    bos.flush();

    }catch(FileNotFoundException e){

    e.printStackTrace();

    }catch(IOException e){

    e.printStackTrace();

    }finally{

    try{

    if(fis != null){

    fis.close();

    }

    if(bis != null){

    bis.close();

    }

    if(fos != null){

    fos.close();

    }

    if(bos != null){

    bos.close();

    }

    System.out.println("文件" + sourceFile.getAbsolutePath() + "复制到" + targetFile.getAbsolutePath() + "完成");

    }catch(IOException e){

    e.printStackTrace();

    }

    }

    }

    }

    private static void copyDirectory(String sourcePathString,String targetPathString){

    if(!new File(sourcePathString).canRead()){

    System.out.println("源文件夹" + sourcePathString + "不可读,无法复制!");

    return;

    }else{

    (new File(targetPathString)).mkdirs();

    System.out.println("开始复制文件夹" + sourcePathString + "到" + targetPathString);

    File[] files = new File(sourcePathString).listFiles();

    for(int i = 0; i < files.length; i++){

    if(files[i].isFile()){

    copyFile(new File(sourcePathString + File.separator + files[i].getName()),new File(targetPathString + File.separator + files[i].getName()));

    }else if(files[i].isDirectory()){

    copyDirectory(sourcePathString + File.separator + files[i].getName(),targetPathString + File.separator + files[i].getName());

    }

    }

    System.out.println("复制文件夹" + sourcePathString + "到" + targetPathString + "结束");

    }

    }

    }

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持聚米学院。

    展开全文
  • 看到题目之后,自己第一次没有使用eclipse,而是使用了编辑器,手编了一个程序,简陋,但实现了功能。 代码如下: import java.io.*; class Copy{ public void copy(String srcPath, String targetPath) throws...

    需求很简单,程序也不难。看到题目之后,自己第一次没有使用eclipse,而是使用了编辑器,手编了一个程序,简陋,但实现了功能。

    代码如下:

    import java.io.*;
    class Copy{
    
    
    	public void copy(String srcPath, String targetPath) throws Exception{
    		File srcFolder = new File(srcPath);
    		File tarFolder = new File(targetPath);
    		if(!tarFolder.exists()){
    			tarFolder.mkdirs();
    		}
    		FileFilter filter = new FileFilter(){
    			public boolean accept(File file){
    				if(file.getName().endsWith(".java")){
    					return true;
    				}
    				return false;
    			}
    		};
    		File[] srcFiles = srcFolder.listFiles(filter);
    		InputStream ins = null;
    		OutputStream ots = null;
    		for(File srcFile:srcFiles){
    			if(srcFile.exists()){
    				String fileName = srcFile.getName();
    				ins = new FileInputStream(srcFile);
    				ots = new FileOutputStream(targetPath+"/"+fileName.replace("java","jad"));
    				int reader = -1;
    				byte[] readByte = new byte[1024];
    				while((reader=ins.read(readByte))!=-1){
    					ots.write(readByte,0,reader);
    				}
    			}
    		}
    		if(ots!=null){
    			ots.close();
    		}
    		if(ins!=null){
    			ins.close();
    		}
    
    	}
    	public static void main(String[] args){
    		Copy obj = new Copy();
    		try{
    			obj.copy("D:/test/test1","D:/test/test2");
    		}catch(Exception e){
    			e.printStackTrace();
    		}
    	}
    }

    还很简陋,怎么设计的下来再详述吧。

    共勉!

    展开全文
  • 我只能做到在程序里先打好复制文件的原路径与我想要个文件复制到哪个目录里 所以我的第步和第二步脱节了,请大神们帮帮忙 ``` package shiyan3; import java.io.BufferedReader; import java.io....
  • 单个文件复制   /** * 单个文件复制 * @param oldPath 原文件路径 比如D:\tmp\a\Test.java * @param newPath 复制后的路径 比如D:\tmp\b\Test.java */ public void copyFile(String oldPath, String ...
    1. 单个文件复制

     

    /**
     * 单个文件复制	
     * @param oldPath 原文件路径 比如D:\tmp\a\Test.java
     * @param newPath 复制后的路径 比如D:\tmp\b\Test.java
    */
    public void copyFile(String oldPath, String newPath) {
    		try {
    			int bytesum = 0;
    			int byteread = 0;
    			File oldfile = new File(oldPath);
    			if (oldfile.exists()) { // 文件存在时
    				InputStream inStream = new FileInputStream(oldPath); // 读入原文件
    				FileOutputStream fs = new FileOutputStream(newPath);
    				byte[] buffer = new byte[1444];
    				int length;
    				while ((byteread = inStream.read(buffer)) != -1) {
    					bytesum += byteread; // 字节数 文件大小
    					System.out.println(bytesum);
    					fs.write(buffer, 0, byteread);
    				}
    				inStream.close();
    			}
    		} catch (Exception e) {
    			System.out.println("复制单个文件操作出错");
    			e.printStackTrace();
    		}
    	}
    @Test
    public void testcopy()
    {
       this.copyFile("D:"+File.separator+"tmp"+File.separator+"a"+File.separator+"Test.java","D:"+File.separator+"tmp"+File.separator+"b"+File.separator+"Test.java");
    }

     2.批量复制

     

    	/**
    	 * 批量复制	
    	 * @param oldPath 原文件路径  比如D:\\tmp\\a
    	 * @param newPath 复制后的路径 比如 D:\\tmp\\b\\cc
    	 */
    	public void copyFolder(String oldPath, String newPath) {
    
    		try {
    			(new File(newPath)).mkdirs(); // 如果文件夹不存在 则建立新文件夹
    			File a = new File(oldPath);
    			String[] file = a.list();
    			File temp = null;
    			for (int i = 0; i < file.length; i++) {
    				if (oldPath.endsWith(File.separator)) {
    					temp = new File(oldPath + file[i]);
    				} else {
    					temp = new File(oldPath + File.separator + file[i]);
    				}
    
    				if (temp.isFile()) {
    					FileInputStream input = new FileInputStream(temp);
    					FileOutputStream output = new FileOutputStream(newPath
    							+ "/" + (temp.getName()).toString());
    					byte[] b = new byte[1024 * 5];
    					int len;
    					while ((len = input.read(b)) != -1) {
    						output.write(b, 0, len);
    					}
    					output.flush();
    					output.close();
    					input.close();
    				}
    				if (temp.isDirectory()) { // 如果是子文件夹
    					copyFolder(oldPath + "/" + file[i], newPath + "/" + file[i]);
    				}
    			}
    		} catch (Exception e) {
    			System.out.println("复制整个文件夹内容操作出错");
    			e.printStackTrace();
    		}
    	}
    	
    	@Test
    	public void testcopy(){
    		this.copyFolder("D:"+File.separator+"tmp"+File.separator+"a", "D:"+File.separator+ "tmp"+File.separator+"b" + File.separator+"测试文件夹");
    	}

     注:File.separator在windows表示为\  linux表示为/ 在路径中用File.separator可以跨平台,避免程序在不同的操作系统上出现路径不识别的问题。

     

     

     

    展开全文
  • 遍历文件夹中的路径复制,在控制台输出文件名和路径java应用程序,将一个包含多个子目录和文件的目录复制到另外一个指定的目录下。
  • 但是此方法是与平台相关的,重命名操作无法将一个文件从一个文件系统移动到另外一个文件系统。这是导致文件操作失败的原因之一,还有的一个可能原因是:目标路径已经存在此文件。 public boolean move(){ ...

     

    对文件的剪切可以使用File的 public boolean renameTo (File dest)方法,重命名此抽象路径名表示的文件。相当于剪切并且重命名。但是此方法是与平台相关的,重命名操作无法将一个文件从一个文件系统移动到另外一个文件系统。这是导致文件操作失败的原因之一,还有的一个可能原因是:目标路径已经存在此文件。

    public boolean move(){
    		boolean flag = false;      
    		File oldFile = new File("D:\\123.txt");
    		String newName = "D:\\123 - 副本.txt";
    		File newFile = new File(newName);
    		flag = oldFile.renameTo(newFile);
    		return flag;
    	}

     如果oldFile和newFile存在于不同的文件系统,则flag会返回false

     如果newFIle已经存在,则flag会返回false


    在需要跨平台且文件比较大的时候,采用多线程进行文件传输是不错的选择。以下为具体方法:

    根据文件大小( x 字节),启动 n 个线程( n x/ β , β为常量),每个线程 i 以共享方式打开文件,从第 i* β个字节处开始读取。

    写入文件同理,先创建 x 大小的文件,然后每个线程往第 i* β个字节处写入。

    n 的数量不能太多,常量β的值很重要,是可以配置的,一般设置为 20m。

          具体操作代码如下:

     

    public class FileThread implements Runnable{
    	
    	private String oldPath = null;
    	private String newPath = null;
    	private int startIndex = 0;
    	private int len = 0;
    	private int count = 0;
    	
    	public FileThread(String oldPath , String newPath , int startIndex , int len , int count){
    		this.oldPath = oldPath;
    		this.newPath = newPath;
    		this.startIndex = startIndex;
    		this.len = len;
    		this.count = count;
    	}
    
    	public void run() {
    		CopyFileTest cf = new CopyFileTest();  
    		int tmpCount = cf.readFile(oldPath, newPath, startIndex, len);   
    		if( count == tmpCount)
    			cf.deleteFile(oldPath);
    	}
    
    }

     

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.RandomAccessFile;
    
    public class CopyFileTest {
    //	β=20mb参数,为常量,单位为kb
    	public static int β = 20 * 1024 * 1024;
    	public static int count = 0;
    	
    	
    	public void deleteFile(String filePath){
    		File file = new File(filePath);
    		file.delete();
    	}
    	
    //	新建一个文件,大小为size 单位是kb
    	public void createFile(String filePath , int size){
    		FileOutputStream fs;
    		try {
    			fs = new FileOutputStream(filePath);
    //			for (int i = 0; i < n + 1; i++) {
    				byte[] buffer = new byte[ size ]; //创建size大小的文件
    				fs.write(buffer);
    //			}
    			try {
    				fs.close();
    			} catch (IOException e) {
    				System.out.println("创建文件失败");
    				e.printStackTrace();
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		File file = new File(filePath);
    		System.out.println("size:" + file.length());
    	}
    	
    	public int readFile(String oldPath , String newPath , int startIndex , int len){
    		int byteLen = 0;
    		File oldFile = new File(oldPath);
    		FileInputStream fin = null;
    //		FileOutputStream fos = null;
    		RandomAccessFile fos = null;
    		try {
    			fin = new FileInputStream(oldFile);
    //			参数rw表示以读写方式打开文件
    			fos = new RandomAccessFile(newPath , "rw");
    			byte[] buff = new byte[ 20 * 1024 * 1024];
    			fin.skip(startIndex);
    			fos.seek(startIndex);
    			int currentSumLen = 0;
    			while( ((byteLen = fin.read(buff)) > 0 ) && currentSumLen < len){
    //				从第startIndex个字段开始,直到endIndex
    				fos.write(buff , 0 , len);
    				currentSumLen += byteLen;
    			}
    			System.out.println("byteLen:" + byteLen);
    			fos.close();
    			fin.close();
    		} catch (Exception e) {
    			System.out.println("复制文件出错!" + len + "--" + byteLen);
    			e.printStackTrace();
    		}
    		count ++;
    		System.out.println("片段结束复制:" + startIndex + "---" + len);
    		return count;
    	}
    	
    	public void copyFile(String oldPath , String newPath ){
    		File oldFile = new File(oldPath);
    //		创建线程个数,至少创建一个线程写入文件
    		int n = 1;
    		if( oldFile.exists() ){
    			int fileSize = (int) oldFile.length(); //单位为kb
    			System.out.println("size:" + fileSize);
    			System.out.println("β * n:" + β * n);
    //			在目标路径下创建新文件
    			this.createFile(newPath, fileSize);
    			n = (fileSize - 1) / β + 1;   //启动n个线程
    			System.out.println("n:"+n);
    			FileThread fthread = null;
    			int tmp = 0;
    			for( int i = 0 ; i < n ; i++){
    				if( i == (n -1) )
    					tmp = fileSize - i * β;
    				else
    					tmp = β;
    //				从i*β处开始写入,写tmp字节
    				fthread = new FileThread( oldPath , newPath , i * β , tmp , n);
    //				启动线程
    				new Thread(fthread).start();
    			}
    		}else{
    			System.out.println(oldPath + "不存在!");
    		}
    	}
    	
    	public boolean move(){
    		boolean flag = false;
    		File oldFile = new File("D:\\123.txt");
    		String newName = "D:\\123 - 副本.txt";
    		File newFile = new File(newName);
    		flag = oldFile.renameTo(newFile);
    		return flag;
    	}
    	
    	public static void main(String args[]){
    		CopyFileTest cf = new CopyFileTest();
    //		System.out.println(cf.move());
    		cf.copyFile("E:\\test\\ready.rar", "F:\\share\\ready.rar" );  //测试
    	}
    
    }
     

     

     

     

     

     

    展开全文
  • 但是此方法是与平台相关的,重命名操作无法将一个文件从一个文件系统移动到另外一个文件系统。这是导致文件操作失败的原因之一,还有的一个可能原因是:目标路径已经存在此文件。如果如果oldFile和newFile存在于不同...
  • Java二进制IO类与文件复制操作实例 16目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...
  • Java二进制IO类与文件复制操作实例 16目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...
  • java源码包---java 源码 大量 实例

    千次下载 热门讨论 2013-04-18 23:15:26
     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
  • java源码包2

    千次下载 热门讨论 2013-04-20 11:28:17
     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...
  • java源码包3

    千次下载 热门讨论 2013-04-20 11:30:13
     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...
  • java源码包4

    千次下载 热门讨论 2013-04-20 11:31:44
     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
  • Java二进制IO类与文件复制操作实例 16目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系...
  • 打开官方发布的可直接发布的部署包apache-roller-4.0\apache-roller-4.0\webapp\roller的目录,该目录下面除了web-inf目录的其他所有文件复制到自建项目的/WebRoot目录下面 自建项目目录结构: (myeclipse建立的...
  • java 面试题 总结

    2009-09-16 08:45:34
    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...
  • java模拟qq源码

    2011-09-20 12:03:43
    (6)在项目上单击鼠标右键,依次选择“新建”/“文件夹”命令,新建一个“lib”文件夹,然后,将JavaDB数据库驱动文件“derby.jar”拷该文件夹中。在该文件上单击鼠标右键,选择“构建路径”/“添加至构建路径”...
  • 但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...
  • (6)在项目上单击鼠标右键,依次选择“新建”/“文件夹”命令,新建一个“lib”文件夹,然后,将JavaDB数据库驱动文件“derby.jar”拷该文件夹中。在该文件上单击鼠标右键,选择“构建路径”/“添加至构建路径”...
  • 安装设置完毕,可以双击class文件,测试一下,正确的情况是:反编译成功,可以显示class文件(无需增加src源文件)为普通的java源代码样式,另外,在Myeclipse菜单栏上多出了一个JadClipse菜单. 现在可以通过...
  • Axx:ARJ压缩文件的分包序号文件,用于将一个文件压至几个小的压缩包中(xx取01-99的数字) A3L:Authorware 3.x库文件 A4L:Authorware 4.x库文件 A5L:Authorware 5.x库文件 A3M,A4M:Authorware Macintosh...
  • JIRA 从入门精通.doc

    千次下载 热门讨论 2011-10-20 13:22:17
    这样就建立了一个新的工作流设置,这样在新建项目的时候就可以通过这个设置我们自己定义的工作流与项目联系一起了。 如果想要讲图中的inactive 状态变成active,必须设置与项目关联起来就可以。 五、 Issue ...
  • 2021-01-25

    2021-01-25 23:20:21
    2.这三个文件全部复制到C盘根目录下,运行nbncre.exe即可 3.显示这个页面时说明安装成功 注:(我安装时就是因为路径不对,然后才显示这个错误的。如果路径对了还是显示这样的错误,请参考另外一篇文章)
  • 安装设置完毕,可以双击class文件,测试一下,正确的情况是:反编译成功,可以显示class文件(无需增加src源文件)为普通的java源代码样式,另外,在Myeclipse菜单栏上多出了一个JadClipse菜单. 现在可以通过...
  • 新版Android开发教程.rar

    千次下载 热门讨论 2010-12-14 15:49:11
    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...
  • ant1.9资源

    2014-11-13 06:56:00
    将文件复制到另外的目录: 2. delete任务 对文件或目录进行删除,举例如下: Eg1. 删除某个文件: Eg2. 删除某个目录: Eg3. 删除所有的备份目录或空目录: **/*.bak"/> 3. mkdir任务 创建目录。...
  • 为了在我们的项目中使用JasperReports项目,我们应该dist路径下的jasperreports-3.0.0.jar文件复制到应用的CLASSPATH路径下。如果是web应用,文件复制到Web应用的WEB-INF/lib路径下。不过JasperReports框架...

空空如也

空空如也

1 2 3 4
收藏数 71
精华内容 28
关键字:

java将一个文件复制到另外一个路径

java 订阅