I/O实例练习---随机点名程序,多级文件夹下的所有目录复制到指定目录下,I/O九种复制文件方法

I/O实例练习

一.I/O九种复制文件方法

package cn.com.abner0528;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;

public class NineCopy {
	public static void main(String[] args) throws IOException {
		String iPath="D:\\abner\\IO\\aa.txt";
		String oPath="D:\\abner\\IO\\bb.txt";
		//copybybyte(iPath,oPath);
		//copybybyteArray(iPath,oPath);
		//copybybufferbyte(iPath,oPath);
		//copybybufferbyteArray(iPath,oPath);
		//copybychar(iPath,oPath);
		//copybycharArray(iPath,oPath);
		//copybyBufferReaderchar(iPath,oPath);
		//copybyBufferReadercharArray(iPath,oPath);
		copybyBufferStringLine(iPath,oPath);
		
	}

	
	public static void copybybyte(String iPath,String oPath) throws IOException {
		FileInputStream is=new FileInputStream(iPath);
		FileOutputStream os=new FileOutputStream(oPath);
		int len=-1;
		while((len=is.read())!=-1) {
			os.write(len);
		}
		System.out.println("复制成功");
		os.close();
		is.close();
	}
	public static void copybybyteArray(String iPath,String oPath) throws IOException {
		FileInputStream is=new FileInputStream(iPath);
		FileOutputStream os=new FileOutputStream(oPath);
		byte[] bys=new byte[1024];
		int len=-1;
		while((len=is.read(bys))!=-1) {
			os.write(bys);
		}
		System.out.println("复制成功");
		os.close();
		is.close();
	}
	public static void copybybufferbyte(String iPath,String oPath) throws IOException {
		BufferedInputStream bi=new BufferedInputStream(new FileInputStream(iPath));
		BufferedOutputStream bo=new BufferedOutputStream(new FileOutputStream(oPath));
		int len=-1;
		while((len=bi.read())!=-1) {
			bo.write(len);
		}
		System.out.println("复制成功");
		bo.close();
		bi.close();
	}		
	public static void copybybufferbyteArray(String iPath,String oPath) throws IOException {
		BufferedInputStream bi=new BufferedInputStream(new FileInputStream(iPath));
		BufferedOutputStream bo=new BufferedOutputStream(new FileOutputStream(oPath));
		int len=-1;
		byte[] bys=new byte[1024];
		while((len=bi.read(bys))!=-1) {
			bo.write(bys);
		}
		System.out.println("复制成功");
		bo.close();
		bi.close();
	}
	public static void copybychar(String iPath,String oPath) throws IOException {
		FileReader fr=new FileReader(iPath);
		FileWriter fw=new FileWriter(oPath);
		int len=-1;
		while((len=fr.read())!=-1) {
			fw.write(len);
		}
		System.out.println("复制成功");
		fw.close();
		fr.close();
	}
	public static void copybycharArray(String iPath,String oPath) throws IOException {
		FileReader fr=new FileReader(iPath);
		FileWriter fw=new FileWriter(oPath);
		int len=-1;
		char[] chr=new char[1024];
		while((len=fr.read(chr))!=-1) {
			fw.write(chr);
		}
		System.out.println("复制成功");
		fw.close();
		fr.close();
	}
	
	public static void copybyBufferReaderchar(String iPath,String oPath) throws IOException {
		BufferedReader br=new BufferedReader(new FileReader(iPath));
		BufferedWriter bw=new BufferedWriter(new FileWriter(oPath));
		int len=-1;
		while((len=br.read())!=-1) {
			bw.write(len);
		}
		System.out.println("复制成功");
		bw.close();
		br.close();
	}
	public static void copybyBufferReadercharArray(String iPath,String oPath) throws IOException {
		BufferedReader br=new BufferedReader(new FileReader(iPath));
		BufferedWriter bw=new BufferedWriter(new FileWriter(oPath));
		int len=-1;
		char[] ch=new char[1024];
		while((len=br.read(ch))!=-1) {
			bw.write(ch);
		}
		System.out.println("复制成功");
		bw.close();
		br.close();
	}
	public static void copybyBufferStringLine(String iPath,String oPath) throws IOException {
		BufferedReader br=new BufferedReader(new FileReader(iPath));
		BufferedWriter bw=new BufferedWriter(new FileWriter(oPath));
		String readLine = br.readLine();
		bw.write(readLine);
		System.out.println("复制成功");
		bw.close();
		br.close();
	}
	
	

}

二.随机点名程序

package cn.com.abner0528;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;

/*
 实现随机点名
 思路:1.读取name文件
 	2.Buffer,rendline
 	3.定义集合
 	4.生成随机数
 	5遍历集合
 */
public class RandomName {
	public static void main(String[] args) throws IOException {
		BufferedReader br=new BufferedReader(new FileReader("D:\\abner\\IO\\name.txt"));
		ArrayList<String> list=new ArrayList<>();
		String len=null;
		while((len=br.readLine())!=null) {
			list.add(len);
		}
		Random it=new Random();
		int no=it.nextInt(list.size());
		for (int i = 0; i < list.size(); i++) {
			if(i==no) {
				System.out.println(list.get(i));
			}
		}
		br.close();
	}
}

三.多级文件夹下的所有目录复制到指定目录下

package cn.com.abner0528;
/*
IO流--多级文件夹下的所有目录复制到指定目录下
思路:1.输入输出流方法创建复制文件的方法
2.判断文件是否为文件夹的方法,如果是文件夹,要递归继续判断子文件夹
 */

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class CopyFile {
	public static void main(String[] args) throws IOException {
		File a=new File("D:\\abner\\IO\\A");
		File b=new File("D:\\abner\\IO\\C");
		//判断是否存在
		if(!b.exists()) {
			b.mkdir();
		}
		remove(a,b);
		System.out.println("复制成功");
	}
	
	//对文件判断是否为文件的复制
	public static void remove(File a,File b) throws IOException {
		//判断文件是否为文件夹
		//如果是文件夹
		if(a.isDirectory()) {
			//在目标文件夹中创建对应的子文件夹
			File bm=new File(b, a.getName());
			bm.mkdir();
			//遍历子文件夹中的文件类型(判断是文件还是文件夹目录)
			File[] files = a.listFiles();
			for (File file : files) {
				remove(file,bm);	//将文件复制到子目录中
			}
			
		}else {
			//如果是文件
			File output=new File(b, a.getName()); 	//创建写入的目标空文件
			copyFile(a, output);	//调用COPY方法,写入到空文件中
		}
	}
	//输入输出流copy文件
	public  static void copyFile(File input,File output) throws IOException {
		BufferedReader br=new BufferedReader(new FileReader(input.getAbsolutePath()));
		BufferedWriter bw=new BufferedWriter(new FileWriter(output.getAbsolutePath()));
		char[] ch=new char[1024];
		int len=-1;
		while((len=br.read(ch))!=-1) {
			bw.write(ch, 0, len);
		}
		bw.close();
		br.close();
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Abner G

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值