java中实现文件复制|使用Java语言如何实现快速文件复制

1. java中复制文件的两种方法是什么

第一种方法:古老的方式 public static long forJava(File f1,File f2) throws Exception{ long time=new Date().getTime(); int length=2097152; FileInputStream in=new FileInputStream(f1); FileOutputStream out=new FileOutputStream(f2); byte[] buffer=new byte[length]; while(true){ int ins=in.read(buffer); if(ins==-1){ in.close(); out.flush(); out.close(); return new Date().getTime()-time; }else out.write(buffer,0,ins); } }方法的2参数分别是原始文件,和拷贝的目的文件.这里不做过多介绍.实现方法很简单,分别对2个文件构建输入输出流,并且使用一个字节数组作为我们内存的缓存器, 然后使用流从f1 中读出数据到缓存里,在将缓存数据写到f2里面去.这里的缓存是2MB的字节数组第2种方法:使用NIO中的管道到管道传输 public static long forTransfer(File f1,File f2) throws Exception{ long time=new Date().getTime(); int length=2097152; FileInputStream in=new FileInputStream(f1); FileOutputStream out=new FileOutputStream(f2); FileChannel inC=in.getChannel(); FileChannel outC=out.getChannel(); int i=0; while(true){ if(inC.position()==inC.size()){ inC.close(); outC.close(); return new Date().getTime()-time; } if((inC.size()-inC.position())<20971520) length=(int)(inC.size()-inC.position()); else length=20971520; inC.transferTo(inC.position(),length,outC); inC.position(inC.position()+length); i++; } }实现方法:在第一种实现方法基础上对输入输出流获得其管道,然后分批次的从f1的管道中像f2的管道中输入数据每次输入的数据最大为2MB

2. 利用JAVA语言编写一个 名为的程序 实现文件的拷贝功能,应该怎样做

import java.io.File;x0dx0aimport java.io.FileInputStream;x0dx0aimport java.io.FileNotFoundException;x0dx0aimport java.io.FileOutputStream;x0dx0aimport java.io.IOException;x0dx0apublic class Copy {x0dx0a/**x0dx0a* @param argsx0dx0a*/x0dx0apublic static void main(String[] args) {x0dx0a// TODO Auto-generated method stubx0dx0aif(args.length!=2){x0dx0aSystem.out.print(“没有输入正确数目的参数,程序退出!”);x0dx0aSystem.exit(0);x0dx0a}x0dx0aFile fileS = new File(“./”+args[0]);x0dx0aFile fileD = new File(“./”+args[1]);x0dx0aif(fileD.exists())System.out.println(“目标文件 “+args[1]+” 已存在!”);x0dx0abyte[] temp = new byte[50];x0dx0aint totalSize = 0;x0dx0atry {x0dx0aFileInputStream fr = new FileInputStream(fileS);x0dx0aFileOutputStream fo = new FileOutputStream(fileD);x0dx0aint length = 0;x0dx0awhile((length = fr.read(temp, 0, temp.length)) != -1){x0dx0atotalSize += length;x0dx0afo.write(temp, 0, length);x0dx0a}x0dx0aSystem.out.println(“文件 “+args[0]+” 有 “+totalSize+” 个字节”);x0dx0aSystem.out.println(“复制完成!”);x0dx0a} catch (FileNotFoundException e) {x0dx0a// TODO Auto-generated catch blockx0dx0ae.printStackTrace();x0dx0aSystem.out.println(“源文件 “+args[0]+” 不存在!”);x0dx0a} catch (IOException e) {x0dx0a// TODO Auto-generated catch blockx0dx0ae.printStackTrace();x0dx0a}x0dx0a}x0dx0a}

3. 关于JAVA文件复制的方法

给你个我的程序你参考一下吧import java.io.*;public class Test{ public static void main(String args[]){ try{ //创建文件输入流 FileReader fr=new FileReader("D:/test/zepc.txt"); BufferedReader br=new BufferedReader(fr); File f=new File("c:/mydoc003.txt"); PrintWriter pw=new PrintWriter(f); //通过循环读数据并显示 String s; while((s=br.readLine())!=null){ pw.println(s); } br.close(); fr.close(); pw.close(); }catch(Exception e){ e.printStackTrace(); } }}还有while((i=fin.read())!=-1);是因为i是int整形数,判断读取完毕就返回-1 while((s=br.readLine())!=null){是因为s是String字符,判断读取完毕返回null

4. java中怎么复制一个文件的内容

hi,可以使用bufferReader和bufferWriter实现文件的读出和写入。示例如下:

publicstaticvoidmain(String[]args)throwsIOException{try(BufferedReaderbufferedReader=newBufferedReader(newFileReader(newFile("D:/test.txt")));BufferedWriterbufferedWriter=newBufferedWriter(newFileWriter(newFile("D:/test1.txt")))){Stringline=null;while((line=bufferedReader.readLine())!=null){bufferedWriter.write(line);bufferedWriter.newLine();bufferedWriter.flush();}}}

5. java如何拷贝文件到另一个目录下

下面列举出4种方式:

1、使用FileStreams复制

这是最经典的方式将一个文版件的内容复制到另一个文件中。 使用权FileInputStream读取文件A的字节,使用FileOutputStream写入到文件B。正如你所看到的我们执行几个读和写操作try的数据,所以这应该是一个低效率的,下一个方法我们将看到新的方式。 这是第一个方法的代码:

6. java中 文件的复制

import java.io.FileInputStream;import java.io.FileOutputStream;import java.nio.channels.FileChannel;public class TestTransfer {public static void main(String[] args) throws Exception { FileInputStream fis = new FileInputStream("c:\\abc.txt"); FileOutputStream fos = new FileOutputStream("c:\\123.txt"); FileChannel fc1 = fis.getChannel(); FileChannel fc2 = fos.getChannel(); fc2.transferFrom(fc1, 0, fc1.size()); fc1.close(); fc2.close(); fis.close(); fos.close();}} 这是最高效率速度最快的一种,使用时候要特别注意。

7. java怎么实现文件拷贝功能

import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class CopyFile {public boolean (String file1,String file2) {File in=new File(file1);File out=new File(file2);if(!in.exists()){System.out.println(in.getAbsolutePath()+"源文件路径错误!!!");return false;}else {System.out.println("源文件路径"+in.getAbsolutePath());System.out.println("目标路径"+out.getAbsolutePath());}if(!out.exists()) out.mkdirs();File[] file=in.listFiles();FileInputStream fin=null;FileOutputStream fout=null;for(int i=0;i<file.length;i++){if(file[i].isFile()){try {fin=new FileInputStream(file[i]);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("in.name="+file[i].getName());try {fout=new FileOutputStream(new File(file2+"/"+file[i].getName()));} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(file2);int c;byte[] b=new byte[1024*5];try {while((c=fin.read(b))!=-1){fout.write(b, 0, c);System.out.println("复制文件中!");}<——————————注意fin.close();fout.flush();fout.close();<——————————–} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}<——————————-注释掉//return true;}else (file1+"/"+file[i].getName(),file2+"/"+file[i].getName());}return false;}public static void main(String[] args) {CopyFile File = new CopyFile();File.("E:\\study\\opngl", "E:\\opengl");}}

8. 使用Java语言如何实现快速文件复制

使用Java语言如何实现快速文件复制:代码: import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.nio.channels.FileChannel;public class Test {public static void main(String[] args){long start = System.currentTimeMillis();FileInputStream fileInputStream = null;FileOutputStream fileOutputStream = null;FileChannel inFileChannel = null;FileChannel outFileChannel = null;try {fileInputStream = new FileInputStream(new File("C:\\from\\不是闹着玩的.flv"));fileOutputStream = new FileOutputStream(new File("C:\\to\\不是闹着玩的.flv"));inFileChannel = fileInputStream.getChannel();outFileChannel = fileOutputStream.getChannel();inFileChannel.transferTo(0, inFileChannel.size(), outFileChannel);//连接两个通道,从通道读取数据写入out通道。} catch (IOException e) {e.printStackTrace();} finally {try {if(fileInputStream != null){fileInputStream.close();}if(inFileChannel != null){inFileChannel.close();}if(fileOutputStream != null){fileOutputStream.close();}if(outFileChannel != null){outFileChannel.close();}} catch (IOException e) {e.printStackTrace();}}long end = System.currentTimeMillis();System.out.println("视频文件从“from”文件夹复制到“to”文件需要" + (end – start) + "毫秒。");}}

9. java如何实现将一个记事本文件内容复制到另一个文件

import java.io.File;x0dx0aimport java.io.FileInputStream;x0dx0aimport java.io.FileNotFoundException;x0dx0aimport java.io.FileOutputStream;x0dx0aimport java.io.IOException;x0dx0ax0dx0apublic class CopyMove {x0dx0ax0dx0a /**x0dx0a * @param argsx0dx0a */x0dx0a public static void main(String[] args) {x0dx0a // TODO Auto-generated method stubx0dx0a CopyMove cm = new CopyMove();x0dx0a cm.(“h:\\1.txt”, “c:\\2.txt”);x0dx0a cm.move(“h:\\3.txt”, “h:\\r\\e\\4.txt”);x0dx0a }x0dx0a //文件复制前必须得到当前文件夹名字且要有\x0dx0a //当复制深层次路径时要用mkdirs方法x0dx0a public void (String path1,String path2){x0dx0a try {x0dx0a FileInputStream fis = new FileInputStream(path1);x0dx0a int l = fis.available();x0dx0a byte[] c = new byte[l];x0dx0a fis.read(c);x0dx0a fis.close();x0dx0a int i = path2.lastIndexOf(“\\”)+1;x0dx0a System.out.println(i);x0dx0a String path = path2.substring(0, i);x0dx0a System.out.println(path);x0dx0a File f = new File(path);x0dx0a f.mkdirs();x0dx0a// System.out.println(f.getAbsolutePath());x0dx0a// System.out.println(f.isDirectory());x0dx0a FileOutputStream fos = new FileOutputStream(path2);x0dx0a fos.write(c);x0dx0a fos.close();x0dx0a System.out.println(“文件复制成功”);x0dx0a } catch (FileNotFoundException e) {x0dx0a // TODO Auto-generated catch blockx0dx0a System.out.println(“文件复制失败”);x0dx0a } catch (IOException e) {x0dx0a // TODO Auto-generated catch blockx0dx0a e.printStackTrace();x0dx0a }x0dx0a }x0dx0a x0dx0a public void move(String path1,String path2){x0dx0a try {x0dx0a FileInputStream fis = new FileInputStream(path1);x0dx0a int l = fis.available();x0dx0a byte[] c = new byte[l];x0dx0a fis.read(c);x0dx0a fis.close();x0dx0a int i = path2.lastIndexOf(“\\”);x0dx0a //System.out.println(i);x0dx0a String path = path2.substring(0, i);x0dx0a System.out.println(path);x0dx0a File f = new File(path);x0dx0a f.mkdirs();x0dx0a// System.out.println(f.getAbsolutePath());x0dx0a// System.out.println(f.isDirectory());x0dx0a FileOutputStream fos = new FileOutputStream(path2);x0dx0a fos.write(c);x0dx0a fos.close();x0dx0a System.out.println(“文件移动成功”);x0dx0a File f2 = new File(path1);x0dx0a f2.delete();x0dx0a } catch (FileNotFoundException e) {x0dx0a // TODO Auto-generated catch blockx0dx0a System.out.println(“文件移动失败”);x0dx0a } catch (IOException e) {x0dx0a // TODO Auto-generated catch blockx0dx0a e.printStackTrace();x0dx0a }x0dx0a }x0dx0ax0dx0a}

10. 怎样用java程序实现文件拷贝

工具/原料

一台配置了java环境的电脑

一款适合自己的开发集成环境,这里用的是eclipse Kepler

文件拷贝DEMO

1.首先,理清思路,然后我们再动手操作。

拷贝,有源文件,和目的文件。

如果原文件不存在,提示,报错。

如果目的文件不存在,创建空文件并被覆盖。

如果目的地址,也即目的路径不存在,创建路径。

拷贝,输入流,输出流,关闭流。

拷贝前输出文件大小,计算拷贝大小,比较并核实。输出。


赞 (0)