精华内容
下载资源
问答
  • 通过二进制流操作方式把程序调整为可以实现任何类型文件进行文件复制。 2.方法 FileInputStream类是文件输入流,根据文件路径可以构造一个FileInputStream对象。 FileInputStreamread实例方法从文件...

    对任何类型文件进行文件复制


    1.要求

    通过二进制流的操作方式把程序调整为可以实现对任何类型文件进行文件复制。

    2.方法

    • FileInputStream类是文件输入流,根据文件路径可以构造一个FileInputStream对象。
    • FileInputStream的read实例方法从文件输入流中读取数据,即读取文件内容。
    • FileOutputStream类是文件输出流,根据文件路径可以构造一个FileOutputStream对象。
    • FileOutputStream的write实例方法将数据写入到输入流中,即往文件中写内容。
    • 读写文件结束后,需要关闭文件输入、输出流。

    3.实现过程

    • copyFileFromDir()方法复制目录下的文件到指定的目录,会连同子目录一起复制过去,其中不包括该目录。根据指定目录创建文件对象,调用createFile()方法创建文件对象,由于传递的第二个参数为false则是创建目录,如果参数为true,则是创建文件。根据目标路径创建文件对象。如果创建的都是目录,则调用copyFileToDir()方法将指定目录中的文件复制到目标目录中。
    • copyFileToDir()方法复制一组文件到指定目录。判断指定目录是否为空,若为空则返回。根据目标路径创建文件对象,如果该文件对象不存在,则新建该目录对象,否则判断文件对象是否是目录,如果不是目录则返回。运用循环遍历需要复制的文件路径,根据路径创建相应的文件对象,如果该文件对象是目录,则调用 copyFileDir()方法通过listFile()方法获得目录中的文件并将文件复制到指定目录中,如果是文件则直接将文件复制到目录中。
    • copyFile()方法是复制文件到指定的目录中,File类的exists()方法判断指定文件是否存在,如果存在则返回,否则调用createFile()方法创建文件。根据传入的目标文件创建输入流,再根据流对象创建文件输出流,创建字节数组用来储存读取的数据。根据读取的数据不为空进行循环,利用文件输出流的write()方法将目标文件的内容写入到指定文件中,读取完毕后释放相关的流资源。
      listFile()方法获得指定目录下的文件,并将文件的绝对路径放入字符串数组中返回。文件对象的list()方法获得目录中的文件,运用循环将目录中的文件的绝对路径放在字符串数组中返回。
    • createFile()方法判断文件是否存在,如果不存在则判断该文件的上级目录是否存在,如果不存在则调用createFile()方法创建该目录,否则判断上级目录是否是文件,如果是文件则创建新文件,否则创建目录。

    4.代码

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    
    public class rw14 {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		String frompath = "D:\\office\\学前任务\\工程训练\\工程训练代码\\目录路径"; //目录路径
    		String topath ="D:\\office\\学前任务\\工程训练\\工程训练代码\\源路径"; //源路径
    		System.out.println("复制目录"+topath+"下的文件(不包含该目录)到指定目录"+frompath+",会连同子目录一起复制过去");
    		copyFileFromDir(frompath,topath); //调用方法实现目录复制
    	}
    	//复制目录下的文件(不包括该目录)到指定目录,会连同子目录一起复制过去
    	public static void copyFileFromDir(String topath, String frompath) {
    		// TODO Auto-generated method stub
    		File file = new File(frompath);//
    		createFile(topath,false);//true表示创建文件,false表示创建目录
    		if(file.isDirectory()) { //如果是目录
    			copyFileToDir(topath,listFile(file));
    		}
    	}
    
    	public static String[] listFile(File dir) {//获取文件绝对路径
    		// TODO Auto-generated method stub
    		String absolutPath=dir.getAbsolutePath();//获得文件目录的绝对路径
    		String[] paths=dir.list();//文件名数组
    		String[] files = new String[paths.length];//声明字符串数组,长为传入文件的个数
    		for(int i=0;i<paths.length;i++) {//遍历显示文件绝对路径
    			files[i]=absolutPath+"/"+paths[i];
    		}
    		return files;
    	}
    	public static void createFile(String path,boolean isFile) {//创建文件或目录
    		createFile(new File(path),isFile); //调用的方法创建新文件或目录
    	}
    	public static void createFile(File file, boolean isFile) { //创建文件或目录
    		// TODO Auto-generated method stub
    		if(!file.exists()) {  //如果文件不存在
    			if(!file.getParentFile().exists()) { //如果文件父目录不存在
    				createFile(file.getParentFile(),false);
    			}else {  //存在文件父目录
    				if(isFile) { //创建文件
    					try {
    						file.createNewFile(); //创建新文件
    						}catch(IOException e) {
    							e.printStackTrace();
    						}
    				}else {
    					file.mkdir();  //创建目录
    				}
    			}
    		}
    	}
    	//复制一组文件到指定目录。targeDir是目标目录,filePath是需要复制的文件路径
    	public static void copyFileToDir(String toDir,String[] filePath) {
    		if(toDir ==null||"".equals(toDir)) {//目标路径为空
    			System.out.println("参数错误,目标路径不能为空");
    			return;
    		}
    		File targetFile = new File(toDir);
    		if(!targetFile.exists()) { //如果指定目录不存在
    			targetFile.mkdir();//新建目录
    		}else {
    			if(!targetFile.isDirectory()) {//如果不是目录
    				System.out.println("参数错误,目标路径指向的不是一个目录!");
    				return;
    			}
    		}
    		for(int i=0;i<filePath.length;i++) {//遍历需要复制的文件路径
    			File file=new File(filePath[i]);//创建文件
    			if(file.isDirectory()) {//判断是否是目录
    				//递归调用方法获得目录下的文件
    				copyFileToDir(toDir+"/"+file.getName(),listFile(file));
    				System.out.println("复制文件"+file);
    			}else {
    				copyFileToDir(toDir,file,"");//文件到指定目录
    			}
    		}
    	}
    	//复制文件到指定目录
    	public static void copyFileToDir(String toDir, File file, String newName) {
    		// TODO Auto-generated method stub
    		String newFile="";
    		if(newName!=null&&!"".equals(newName)) {
    			newFile=toDir+"/"+newName;
    		}else {
    			newFile=toDir+"/"+file.getName();
    		}
    		File tFile=new File(newFile);
    		copyFile(tFile,file);//调用方法复制文件
    	}
    	public static void copyFile(File toFile, File fromFile) {//复制文件
    		// TODO Auto-generated method stub
    		if(toFile.exists()) {//判断目标目录中文件是否存在
    			System.out.println("文件"+toFile.getAbsolutePath()+"已经存在,跳过该文件!");
    			return;
    		}else {
    			createFile(toFile,true);//创建文件
    		}
    		System.out.println("复制文件"+fromFile.getAbsolutePath()+"到"+toFile.getAbsolutePath());
    		try {//创建文件输入流
    			InputStream is=new FileInputStream(fromFile);
    			FileOutputStream fos =new FileOutputStream(toFile);//文件输出流
    			byte[]buffer=new byte[1024];//字节数组
    			while(is.read(buffer)!=-1) {//将文件内容写到文件中
    				fos.write(buffer);
    			}
    			is.close();  //输入流关闭
    			fos.close();//输出流关闭
    		}catch(FileNotFoundException e) {//捕获文件不存在异常
    			e.printStackTrace();
    		}catch(IOException e) { //捕获异常
    			e.printStackTrace();
    		}
    	}
    	
    
    }
    
    

    5.结果

    编译结果如下图所示:
    这里写图片描述
    运行结果如下图所示:
    这里写图片描述

    展开全文
  • * 使用FileInputStream和FileOutputStream字节流对文件进行复制,可以对任意文件进行复制 * 字符流FileReader和FileWriter字符流对文件进行复制,只能对文本文件进行复制 */ public class TestCopy { //字节流...
    
    ```java
    最基本的文件复制操作
    ```package com.kd.ios2;
    
    import java.io.*;
    
    /**
     * 使用FileInputStream和FileOutputStream字节流对文件进行复制,可以对任意文件进行复制
     * 字符流FileReader和FileWriter字符流对文件进行复制,只能对文本文件进行复制
     */
    public class TestCopy {
        //字节流方法
        public void zijie() throws IOException {
            //创建流对象
            InputStream is=new FileInputStream(new File("e:/readme.txt"));
            OutputStream os=new FileOutputStream(new File("e:/readme2.txt"));
            //创建一个中转站,将读取出来的东西,先放到中转站,之后再从中转站写到新的文件中
            int n;
            n=is.read();
            while(n!=-1){   //n==-1说明读到了文件的末尾
                os.write(n);
                n=is.read();
            }
            //关闭资源
            is.close();
            os.close();
        }
        //字符流方法
        public void zifu() throws IOException {
            //创建流对象
            Reader fr=new FileReader(new File("e/readme.txt"));
            Writer fw=new FileWriter(new File("e/readme1.txt"));
            //创建中转站
            int n;
            n=fr.read();
            while(n!=-1){//n==-1说明读到了文件的末尾,不是最后一个字符
                fw.write(n);
                n=fr.read();
            }
            //关闭资源
            fr.close();
            fw.close();
        }
    
    }
    
    
    
    展开全文
  • 下面是一个简单的对文件进行复制的方法。【如果文件大,比如,超过1G等大小,就不适用这种方法了】 static void copyFile(String sFile,String dFile){ File sFile2=new File(sFile); File dFile2=new File...

    综合前面的文件读取,和文件写入的技术,我们就可以实现文件的复制

    下面是一个简单的对文件进行复制的方法。【如果文件大,比如,超过1G等大小,就不适用这种方法了】

    	static void copyFile(String sFile,String dFile){
    		File sFile2=new File(sFile);
    		File dFile2=new File(dFile);
    		if(!sFile2.exists()) return;
    		if(!dFile2.exists()){
    			try {
    				dFile2.createNewFile();
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    		try {
    			FileInputStream sIn=new FileInputStream(sFile2);
    			try {
    				FileOutputStream sOut=new FileOutputStream(dFile2);
    				byte[] sByte=new byte[(int)sFile2.length()];
    				try {
    					sIn.read(sByte);
    				} catch (IOException e1) {
    					// TODO Auto-generated catch block
    					e1.printStackTrace();
    					System.out.print("读源文件错误!\n");
    				}
    				try {
    					sOut.write(sByte);
    					sOut.close();
    					sIn.close();
    				} catch (IOException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    					System.out.print("文件写入错误!\n");
    				}
    				
    			} catch (FileNotFoundException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    				return;
    			}
    		} catch (FileNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			return;
    		}
    	}

    下面会测试一个大文件复制方法,敬请期待。
    展开全文
  • 以下是演示**“如何在Python中复制文件”九种方法**。 shutil copyfile()方法 shutil copy()方法 shutil copyfileobj()方法 shutil copy2()方法 ...接下来,它不会特殊文件进行任何不同
  • public static void main(String[] args) throws IOException { //copyFileOne();//最慢,可以体验下,一定要弄一个几兆大小,别太大 copuFileTwo();... * 和上个read()方法没别 * 一次读写一个字节,和...
    
    	public static void main(String[] args) throws IOException {
    		//copyFileOne();//最慢,可以体验下,一定要弄一个几兆大小的,别太大
    		copuFileTwo();//同样大小 330ms复制完毕
    	}
    	/**
    	 * read(byte[] b)
    	 * 和上个read()方法没别的
    	 * 一次读写一个字节,和一次读写1024或者更多字节那个想想都知道哪个快 呵呵,但是缓冲区设置的大也会导致资源浪费,也会影响读取速度
    	 */
    	private static void copuFileTwo() throws IOException{
    		long begin = System.currentTimeMillis();
    		FileInputStream fis = new FileInputStream("D:\\test.avi");
    		FileOutputStream fos = new FileOutputStream("F:\\test.avi");
    		byte[] b = new byte[1024];
    		int len = 0;
    		while((len = fis.read(b)) != -1){
    			fos.write(b);
    		}
    		fis.close();
    		fos.close();
    		System.out.println("文件复制完毕,用时:" + (System.currentTimeMillis() - begin) + "ms");
    		
    	}
    	/**
    	 * read();每次读取一字节,速度非常可观
    	 * 复制文件到指定位置,可以是任何文件,电影,文本,mp3等
    	 * 1.读取文件
    	 * 2.将读取到的文件写入到指定位置
    	 * 
    	 * 为了看的清楚没有处理异常,日常开发是一定要处理的,最终应该是3个try..catch,对象一个,关流两个
    	 */
    	private static void copyFileOne() throws IOException{
    		long begin = System.currentTimeMillis();
    		File file = new File("D:\\test.avi");//文件大小27.9M复制用时292708000s,不是一般的慢,27M就是两千多万个字节,一共读取复制两千多万次能不慢吗....
    		FileInputStream fis = new FileInputStream(file);
    		FileOutputStream fos = new FileOutputStream("F:\\test.avi");
    		int len = 0;
    		while((len = fis.read()) != -1){
    			fos.write(len);//写入数据
    		}
    		fis.close();
    		fos.close();
    		System.out.println("文件复制完毕,用时:" + (System.currentTimeMillis() - begin) + "ms");
    	}
    
    
    展开全文
  • 使用FileInputStream和FileOutputStream字节流对文件进行复制,可以对任意文件进行复制 字符流FileReader和FileWriter字符流对文件进行复制,只能对文本文件进行复制 */ public class TestCopy { //字节流方法 ...
  • Node.js 本身并没有提供...在文件系统中,使用流来读取文件的时候,对于一个大文件可能并不会一次性读取完,而是会分好几次读取完,读取时候会响应数据事件,在文件没读取完时候就可以读取数据进行操作。同理
  • python复制文件方式有很多个,针对不同目的有不同操作,可以对文件权限,描述信息进行复制或者不复制操作,这里只记录了几个我日常会用到 from shutil import copyfile,copy,copyfileobj import os help...
  • 今天遇到一个问题,就是每次当将布局文件一段文本粘贴到本文件的另一个地方时,再次运行,主程序中findViewById(R.id.ivUp)语句报错,说找不到。 解决方法:选中工程——>Project——>Clean。
  • 在 EasyDSS 开发过程中,由于有用户在使用过程中出现过误删操作,所以我们需要对用户上传视频进行备份,防止用户误删除,此过程需要对文件进行复制。 常用文件复制功能,直接采用 go 官方库提供 io....
  • 这边需要用到Java常见IO流一些基础知识,以及文件File类基本操作,相关方法可以查询API,可以用较少代码以及方法递归思路实现指定文件夹指定格式的文件复制到指定路径,并且保留原文件夹结构,参考代码...
  • 输出流在自己文件里写入这些信息,输入流再读信息,输出流继续把读出信息写进去,直到输出流读完信息,输入流就完成了信息写入,最终显示就是文件复制,下面我们通过一个视频文件进行复制,...
  • 在业务稳定性要求比较高情况下,运维为能及时发现问题,有时需要应用程序日志进行实时分析,当符合某个条件时就立刻报警,而不是被动等待出问题后去解决,比如要监控nginx$request_time和$upstream_response...
  • 事情是这样,我在linux 下用C语言编写了一个小程序,二进制文件进行复制方法是fopen()一个二进制文件,然后用fread()读取一部分数据写到另一个新建二进制文件中,直到复制完成。结束后我两个文件进行对比...
  • 原理如下图:文件复制:一读一写如果要把文件复制到c盘,需要通过内存对文件进行读取和写入,文件复制的时候,需要明确数据源(就是要复制那个文件),数据的目的地(将文件复制到哪里?)文件复制的步骤如下:创建一个...
  • 主要包括文本文件读取与写入方法文件的删除、移动和复制文件目录操作。 首先展示一下最终界面如下所示: 首先建立Windows窗体应用程序,在Form1.cs【设计】中进行界面设计如上图展示所示: 接下来...
  • 1,在需要大量小文件进行移动或复制时,用cp、mv都会显得很没有效率,可以用tar先压缩再解压缩方式。2,在网络环境中传输时,可以再结合nc命令,通过管道和tcp端口进行传输。nc和tar可以用来快速在两台机器...
  • 在.Net中,对文件(File)和文件夹(Folder)操作可以使用File类和Directory类,也可以使用FileInfo类和DirectoryInfo类。文件夹(Folder)是只在Windows操作系统中使用名词。在操作系统理论中,人们更习惯于...
  • 背景电脑中重要文件,甚至是局域网共享文件夹,我们有必要保护其电脑文件的完整性,防止被恶意修改,删除、复制等操作,下面向大家分享一下有关保护计算机电脑文件安全防止意外修改文件的具体方法方法/步骤...
  • 当我们复制一个文件时用复制粘贴就可以了,如果是多个文件呢?就会很麻烦了,今天给大家介绍一下用Python批量复制文件,方法有九...接下来,它不会特殊文件进行任何不同处理,也不会将它们复制为新特殊文件。...
  • VTK如何在VS中IGES文件进行读取和显示代码在这篇文章: VTK进行IGES文件读取及显示 在运行程序时,没有任何报错,但是一直文件读取不成功。 但是我在VS中检查我文件路径并没有错,困扰了很久。然后突然发现...
  • 字符流方法实现复制文件

    千次阅读 2013-07-31 17:52:55
    //读取一个已有文本文件,使用字符读取流和文件进行关联 FileReader fr = new FileReader("C:\\Demo\\demo.txt"); //创建一个目的存储文件,用于存储读取到数据 FileWriter fw = new FileWriter
  • 基于Linux的操作系统是一种自由和开放源... (4)内存和文件管理有自己优越的方法。 Linux常用的命令 路径的表示方法 cd :change directory的缩写,用于改变当前路径; 语法:cd [相对路径或绝对路径] 绝对路径:...
  • 该存储库包含Excel和Matlab文件,该文件处理Penn世界表(PWT 10.0)和Maddison项目数据库(MPD 2020)中数据,以复制数字并进行回归,如Acemoglu(2009)和Mankiw,Romer y Weil(1992)一样。 如有疑问,请通过...
  • 今天,就给大家介绍一个好用的方法来处理有坏道的硬盘,即硬盘进行扇区级复制(或制作镜像),然后通过扫描硬盘副本来恢复丢失的数据。关于硬盘坏道与数据恢复经常使用硬盘的用户坏道都不会感到陌生,硬盘产生坏道...
  • 执行复制命令会报错 cp *.* /home/ 因为有个文件名:-zZs0N65xSnO_J7F-7kKIYZLmSRMxDDyeA4463bChwwU3iB3...Linux/Unix系统中有一个文件名叫“-target”,如果我们想进行操作,例如要删除它按照一般删除方法...
  • 背景电脑中重要文件,甚至是局域网共享文件夹,我们有必要保护其电脑文件的完整性,防止被恶意修改,删除、复制等操作,下面向大家分享一下有关保护计算机电脑文件安全防止意外修改文件的具体方法方法/步骤...
  • 本文实例讲述了PHP实现自动图片进行滚动显示的方法。分享给大家供大家参考。具体如下: 指定某个图片目录,该程序自动在页面上滚动展示每一张图片,使用方法: 1. 创建一个幻灯片的图像文件夹。 2. 删除图像文件夹...
  • 用java对文件进行操作

    2010-12-30 09:51:31
    .java文件,main中有测试用的代码,粘到src下可直接运行使用。 这个版本中目前有的方法为: 1.创建txt文件的方法。...5.复制单个txt文件的方法。 6.为txt文件记录内容的方法。 7.读取txt文件内容的方法

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,838
精华内容 1,135
关键字:

对文件进行复制的方法