利用FileReader和FileWriter完成一个文件拷贝功能

目标:

在cmd中可以执行java XXXX d:\1.txt d:\2.txt

完成文件的拷贝命令

package com.ryan.io;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;

public class TestFileReaderAndWriter {
	public void fileWrite(String destfile) {
		File f = new File(destfile);
		String s = "Hello World!!";
		try {
			Writer w = new FileWriter(f);
			w.write(s);
			w.flush();
			w.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public void fileRead(String soucefile) {
		File f =  new File(soucefile);
		if(f.exists()==false){
			System.out.println("源文件不存在,请重新输入");
			System.exit(0);
		}
		char[] c = new char[(int) f.length()];// f.length返回文件的长度分配给字符数组
		try {
			//读取文件
			/*
			Reader r = new FileReader(f);
			int len = r.read(c);
			System.out.println(new String(c,0,len));
			*/
			
			
			
			//循环读取字符
			Reader r = new FileReader(f);
			for (int i = 0; i < c.length; i++) {
				c[i] = (char)r.read(c); // r.read(c)返回的是int型,将int转为字符型
			}
			//System.out.println(new String(c)); //String中的构造函数可以将字符数组转成字符串
			
		} catch (Exception e) {
			e.printStackTrace();
		}		
	}
	
	public static void main(String[] args) {
		//利用上面的功能远成一个文件copy的功能
		if(args.length != 2){
			System.out.println("参数不正确,请重新输入");
			System.exit(0);
		}
		
		if(args[0].equals(args[1])){
			System.out.println("不能复制自身!");
			System.exit(0);
		}
		
		TestFileReaderAndWriter t = new TestFileReaderAndWriter();
		String soucefile = args[0];
		String destfile = args[1];
		t.fileRead(soucefile);
		t.fileWrite(destfile);
		System.out.println("文件复制成功");
	}
}

另一种方式,使用字节流,让文件边读边写操作

package com.ryan.io;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

public class FileCopy {

	public static void main(String[] args) throws Exception {
		if(args.length != 2){
			System.out.println("参数不正确,请重新输入");
			System.exit(0);
		}
		
		if(args[0].equals(args[1])){
			System.out.println("不能复制自身!");
			System.exit(0);
		}
		
		File src = new File(args[0]); // 找到源文件
		//判断源文件是否存在
		if(src.exists() == false) {
			System.out.println("源文件不存在");
			System.exit(0);
		}else {
			File dest = new File(args[1]); // 找到目标文件
			InputStream is = new FileInputStream(src); 
			OutputStream ops =  new FileOutputStream(dest);
			int temp = 0;
			//temp不等-1表达还没有读完
			while((temp = is.read())!= -1) { // 写入数据
				ops.write(temp);
			}
			System.out.println("文件复制完成");
			is.close();
			ops.close();
		}
	}
}


你可能感兴趣的:(java)