打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
java实现文件拷贝

如果想要实现文件的拷贝操作,那么现在有两种做法:

1、将所有的文件内容一次性读取到程序之中,而后一次性输出;

2、采用边读边输出的方,那么现在就不会占用过大的内存空间;

由于现在有可能要拷贝二进制数据,那么一定使用字节流比较合适一下。

如果输入参数正确了,那么应该进行源文件的验证。

package com.gwolf;

import java.io.File;

public class TestDemo {

public static void main(String[] args) throws Exception{

if(args.length!=2) {

System.exit(1);

}

File inFile = new File(args[0]);

if(!inFile.exists()) {

System.exit(1);

}

File outFile = new File(args[1]);

}

}

如果此时源文件正确,那么就需要定义输出文件,同事要考虑到输出文件有目录的情况。

package com.gwolf;

import java.io.File;

public class TestDemo {

public static void main(String[] args) throws Exception{

if(args.length!=2) {

System.exit(1);

}

File inFile = new File(args[0]);

if(!inFile.exists()) {

System.exit(1);

}

File outFile = new File(args[1]);

if(!outFile.getParentFile().exists()) {

outFile.getParentFile().mkdirs();// 创建目录

}

}

}

接下来实现文件内容的拷贝。

package com.gwolf;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

public class TestDemo {

public static void main(String[] args) throws Exception{

if(args.length!=2) {

System.exit(1);

}

File inFile = new File(args[0]);

if(!inFile.exists()) {

System.exit(1);

}

File outFile = new File(args[1]);

if(!outFile.getParentFile().exists()) {

outFile.getParentFile().mkdirs();// 创建目录

}

InputStream input = new FileInputStream(inFile);

OutputStream outputStream = new FileOutputStream(outFile);

int temp = 0;

while((temp=input.read())!=-1) {

outputStream.write(temp);

}

}

}

文件读取完成之后,关闭所有的连接。

package com.gwolf;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

public class TestDemo {

public static void main(String[] args) throws Exception{

if(args.length!=2) {

System.exit(1);

}

File inFile = new File(args[0]);

if(!inFile.exists()) {

System.exit(1);

}

File outFile = new File(args[1]);

if(!outFile.getParentFile().exists()) {

outFile.getParentFile().mkdirs();// 创建目录

}

InputStream input = new FileInputStream(inFile);

OutputStream outputStream = new FileOutputStream(outFile);

int temp = 0;

while((temp=input.read())!=-1) {

outputStream.write(temp);

}

input.close();

outputStream.close();

}

}

这个时候发现,的确实现了拷贝,但是这个拷贝的速度实在太慢了。现在的程序属于单个字节的拷贝。我们必须采用部分数据读取并保存的方式。

package com.gwolf;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

public class TestDemo {

public static void main(String[] args) throws Exception{

if(args.length!=2) {

System.exit(1);

}

File inFile = new File(args[0]);

if(!inFile.exists()) {

System.exit(1);

}

File outFile = new File(args[1]);

if(!outFile.getParentFile().exists()) {

outFile.getParentFile().mkdirs();// 创建目录

}

InputStream input = new FileInputStream(inFile);

OutputStream outputStream = new FileOutputStream(outFile);

int temp = 0;

byte data[] = new byte[1024];

while((temp=input.read(data))!=-1) {

outputStream.write(data,0,temp);

}

input.close();

outputStream.close();

}

}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Java IO操作详解
Python和Java代码的一个简单比较
字节流与字符流的区别详解
Java IO: PrintWriter
用Java简单实现文件分割与合并
将输出流(OutputStream)转化为输入流(InputStream)的方法(一)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服