导航:首页 > 版本升级 > java中实现文件复制

java中实现文件复制

发布时间:2023-01-22 16:41:16

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 block
e.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 block
e.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 block
e.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.首先,理清思路,然后我们再动手操作。

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

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

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

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

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

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

阅读全文

与java中实现文件复制相关的资料

热点内容
makefile的文件路径 浏览:392
计算机程序文件名扩展名为 浏览:982
网络游戏推广策划案 浏览:609
替换所有文件内容的代码 浏览:960
不是常用数据模型有哪些 浏览:426
aspcms版本号 浏览:835
安卓怎么用数据流量下载软件 浏览:553
大众手动空调数据流通道号是多少 浏览:303
手机qq令牌 浏览:737
cg原画上色教程 浏览:993
婚介服务中心app怎么做 浏览:43
日本苹果66g多少钱 浏览:93
个性的文件夹名称 浏览:697
怎么设置文件打开密码 浏览:811
手机版qq客服代码怎么用 浏览:24
fme可以打开哪些文件 浏览:339
好看的qq密码 浏览:293
安卓唯一标识有哪些 浏览:243
win10ime 浏览:271
手机号大数据保护停机是什么意思 浏览:81

友情链接