io流

字节流:

基类:inputStream,outputStream

拷贝文件使用方法
1.直接用字节数组的方式读取

public static void main(String[] args) throws IOException {
		FileInputStream inputStream = new FileInputStream("d:/zds/Foods.zip");
        FileOutputStream outputStream = new FileOutputStream("d:/zds/Foods2.zip");
        int len;
        byte[] bs = new byte[1024];
        // 开始时间
        long begin = System.currentTimeMillis();
        // 一次读取一个字节数组
        while ((len = inputStream.read(bs)) != -1) {
            outputStream.write(bs, 0, len);
        }
        // 用时毫秒
        System.out.println(System.currentTimeMillis() - begin);// 1208毫秒

        inputStream.close();
        outputStream.close();
	}

2.使用缓冲流bufferInputStream,bufferOutPutStream拷贝

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

	try {
		InputStream iStream = new FileInputStream("d:/zds/Foods.zip");
		BufferedInputStream biStream=new BufferedInputStream(iStream);
		OutputStream oStream=new FileOutputStream("d:/zds/Foods3.zip");
		BufferedOutputStream boStream =new BufferedOutputStream(oStream);
		
		long timeBegin=System.currentTimeMillis();
		int len;
		byte[] arr=new byte[1024];
		while((len=biStream.read(arr))!=-1){
			boStream.write(arr, 0, len);
		}
		System.out.println(System.currentTimeMillis()-timeBegin);//271毫秒
		
	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	
	
}

批量拷贝文件(不包含文件夹)

package cn.zds;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
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 Copy2 {

	public static void main(String[] args) throws IOException {
		File file1=new File("D:\\test");
		File file2=new File("E:\\web");
		
		if(!file2.exists()){
			file2.mkdir();
		}
		
		File[] files=file1.listFiles();
		for (File file : files) {
			File newfile = new File(file2,file.getName());
			copfile(file,newfile);
		}
//		
		
		
	}

	private static void copfile(File file1, File file2) throws IOException {
	BufferedInputStream bInputStream=new BufferedInputStream(new FileInputStream(file1));
	BufferedOutputStream bOutputStream =new BufferedOutputStream(new FileOutputStream(file2));
	
	byte[] b=new byte[1024];
	int len;
	while ((len=bInputStream.read(b))!=-1) {
		bOutputStream.write(b, 0, len);
		
	}
	
	bInputStream.close();
	bOutputStream.close();
	}
	
	
	
}

批量拷贝(包含文件夹)

  • A:封装数据源File
  • B:封装目的地File
  • C:判断该File是文件夹还是文件
    • a:是文件夹
    • 就在目的地目录下创建该文件夹
    • 获取该File对象下的所有文件或者文件夹File对象
    • 遍历得到每一个File对象
    • 回到C
  • b:是文件
    • 就复制(字节流)
package cn.zds;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
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 Copy3 {

	public static void main(String[] args) throws IOException {
		File file1=new File("D:\\test");
		File file2=new File("E:\\web");
		copFolder(file1,file2);
		
		
		
//		
		
		
	}

	private static void copFolder(File srcFile, File destFile) {
		
		if(srcFile.isDirectory())//是文件夹
		{
			File newFolder = new File(destFile, srcFile.getName());
            newFolder.mkdir();//在目标目录创建此文件夹
			File[] files=srcFile.listFiles();
			for (File file : files) {//遍历该文件夹下的文件,递归的判断创建
				copFolder(file,newFolder);
				
			}
		}
		else {//是文件就copy

			File newFile = new File(destFile,srcFile.getName());
			try {
				copfile(srcFile,newFile);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	private static void copfile(File file1, File file2) throws IOException {
	BufferedInputStream bInputStream=new BufferedInputStream(new FileInputStream(file1));
	BufferedOutputStream bOutputStream =new BufferedOutputStream(new FileOutputStream(file2));
	
	byte[] b=new byte[1024];
	int len;
	while ((len=bInputStream.read(b))!=-1) {
		bOutputStream.write(b, 0, len);
		
	}
	
	bInputStream.close();
	bOutputStream.close();
	}
	
	
	
}

字符流:
读取文件内容:

public static void main(String[] args) {
		File file = new File("D:\\lzq/java.txt");
		reader(file);
		
	}
    /**
	 * 读取文件内容
	 * @param file
	 */
	public static void reader(File file) {
		Reader read = null;  //声明Reader对象
		char[] c = new char[(int)file.length()];   //根据文件大小定义数组
		try {
			read = new FileReader(file); //使用FileReader实例化Reader
			read.read(c);        //读取内容到数组
			read.close();
		}catch(IOException e) {
			System.out.println("读取失败");
			e.printStackTrace();
		}
		System.out.println(c);
	}


向文件写入内容;

/**
	 * 向文件写入内容
	 * @param file
	 */
	public static void writer(File file) {
		String str = "java";
		char[] c = str.toCharArray();  //将字符串转换为char数组
		try {
			Writer writer = new FileWriter(file);   //实例化对象
			writer.write(c);    //写入数据
			writer.close();
			System.out.println("写入成功");
		}catch(IOException e) {
			System.out.println("写入失败");
			e.printStackTrace();
		}
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值