Java学习 IO流 作业01

1.从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中 

package work;
/*
 * 1.从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
 */
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Work002 {
	public static void main(String[] args) throws IOException{
		File file = new File("C:\\Users\\ZYX'sDay\\Desktop\\FileDemo");
		File file1 = new File(file,"ss");
		File file2 = new File(file,"sfsdf");
		
		fileCopy(file1,file2);
	}

	private static void fileCopy(File file1, File file2) throws IOException{
		FileInputStream fis = null;
		FileOutputStream fos = null;
		
		File[] files = file1.listFiles();
		for (File file : files) {
			if(file.isDirectory()){
				fileCopy(file, file2);
			}else {
				fis = new FileInputStream(file);
				fos = new FileOutputStream(new File( file2, file.getName() ) );
				byte[] bytes = new byte[1024];
				int len = 0;
				
				while( (len = fis.read(bytes)) != -1 ){
					fos.write(bytes, 0, len);
				}
				fis.close();
				fos.close();
			}
		}
		
	}

}

2.获取指定目录及子目录下所有txt文件的个数,并将这些txt文件复制到D盘下任意目录 

package work;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

//2.获取指定目录及子目录下所有txt文件的个数,
//并将这些txt文件复制到D盘下任意目录
public class Work003 {
	static int count = 0;
	public static void main(String[] args)throws IOException {
		File file = new File("C:\\Users\\ZYX'sDay\\Desktop\\FileDemo");
		File fileO = new File("D:\\day23worktest");
		
		copyAlltxt(file,fileO);
		System.out.println(file+" 下.txt类型文件个数为: "+count);
	}

	private static void copyAlltxt(File file,File fileO) throws IOException{
		FileReader fr = null;
		FileWriter fw = null;
		File[] files = file.listFiles(new MyFileFilter());
		
		for (File file2 : files) {
			if(file2.isDirectory()){
				copyAlltxt(file2, fileO);
			}else {
				count++;
				fr = new FileReader(file2);
				fw = new FileWriter(new File(fileO, file2.getName()));
				
				char[] ch = new char[1024];
				int len = 0;
				while( (len = fr.read(ch)) != -1 ){
					fw.write(ch, 0, len);
					fw.flush();
				}
				fr.close();
				fw.close();
			}
		}
		
	}

}

//过滤类
package work;

import java.io.File;
import java.io.FileFilter;

public class MyFileFilter implements FileFilter{

	@Override
	public boolean accept(File dir) {
		if(dir.isDirectory()) return true;
		return dir.getName().toLowerCase().endsWith(".txt");
	}
	

}

 3.键盘输入10个数,放到数组中
    (1)去除该数组中大于10的数
    (2)将该数组中的数字写入到本地文件number.txt中

package work;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

/*
 * 键盘输入10个数,放到数组中
	(1)去除该数组中大于10的数
	(2)将该数组中的数字写入到本地文件number.txt中
 */
public class Work004 {
	public static void main(String[] args)throws IOException {
		File file = new File("D:\\day23worktest\\number.txt");
		int[] ch = {1,55,52,73,4,5,6,2,3,6};
		writeFile(charFilter(ch),file);
	}
	
	//打印到文件中
	private static void writeFile(char[] charFilter, File file) throws IOException{
		FileWriter fw = new FileWriter(file);
		//直接一行写的方式写出来数字之间没有空格看着不够直接 所以摒弃
		//fw.write(charFilter, 0, charFilter.length);
		for(int i = 0 ; i < charFilter.length ; i++){
			fw.append(charFilter[i]);
			fw.append(' ');
			fw.flush();
		}
		fw.close();
	}

	//charfilter 过滤大于10的数
	private static char[] charFilter(int[] ch) {
		StringBuilder sb = new StringBuilder();
		for(int i:ch){
			if(i < 10){
				sb.append(i);
				//System.out.println(i);
			}
		}
		char[] sch = sb.toString().toCharArray();
		return sch;
	}
	
	

}

 4.产生10个1-100的随机数,并放到一个数组中
    (1)把数组中大于等于10的数字放到一个list集合中,并打印到控制台。
    (2)把数组中的数字放到当前文件夹的number.txt文件中

package work;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/*
 * 4.产生10个1-100的随机数,并放到一个数组中
	(1)把数组中大于等于10的数字放到一个list集合中,并打印到控制台。
	(2)把数组中的数字放到当前文件夹的number.txt文件中
 */
public class Work005 {
	public static void main(String[] args) throws IOException{
		File file = new File("D:\\day23worktest\\number.txt");
		List<Integer> list = randomInt();
	
		FileWriter fw = new FileWriter(file);
		for (Integer ing : list) {
			fw.append( ing.toString() );
			fw.write(' ');
			fw.flush();
		}
		fw.close();
	}
	
	//生成随机数数组
	private static List<Integer> randomInt() {
		List<Integer> list = new ArrayList<Integer>();
		int[] num = new int[10];
		//生成随机数放入数组 并 把大于10的数加到List里
		Random ran = new Random();
		for(int i = 0 ; i < 10 ;i++){
			num[i] = ran.nextInt(100);
			if(num[i] > 10){
				list.add( (Integer)num[i] );
			}
		}
		
		for(Integer intg : list){
			System.out.print(intg+" ");
		}
		return list;
	}
	
	

}

 5.list集合添加姓名{张三,李四,王五,二丫,钱六,孙七},将二丫替换为王小丫,写入到"D:\\stuinfo.txt"

package work;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/*
 * 5.list集合添加姓名{张三,李四,王五,二丫,钱六,孙七},
 * 将二丫替换为王小丫,写入到"D:\\stuinfo.txt"
 */
public class Work006 {
	public static void main(String[] args)throws IOException {
		File file = new File("D:\\day23worktest\\stuinfo.txt");
		FileWriter fw = new FileWriter(file);
		List<String> list = new ArrayList<>();
		list.add("张三");
		list.add("李四");
		list.add("王五");
		list.add("二丫");
		list.add("钱六");
		list.add("孙七");
		
		//遍历 + 替换
		for(int index = 0 ; index < list.size() ; index++){
			if(list.get(index).equalsIgnoreCase("二丫")){
				list.set(index, "王小丫");
			}
			fw.append(list.get(index));
			fw.append(" ");
			fw.flush();
		}
		fw.close();
	}

}

 6.从控制台获取输入的文件目录然后将该目录(包含子目录)下的.java文件复制到D:/java文件夹中

package work;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/*
 * 6.从控制台获取输入的文件目录
 * 然后将该目录(包含子目录)下的.java文件复制到D:/java文件夹中
 * 这个题目可以根据之前写的题目1的改一改就行,依旧省略输入目录
 */
public class Work007 {
	public static void main(String[] args) throws IOException {
		File file1 = new File("D:\\day23worktest");
		File file2 = new File("D:\\Java");
		
		copyFile(file1, file2);
		
	}
	
	//文件挑选和拷贝
	public static void copyFile(File file1,File file2)throws IOException{
		File[] files = file1.listFiles();
		FileInputStream fis = null;
		FileOutputStream fos = null;
		
		for(File ff: files){
			if(ff.isDirectory()){
				copyFile(ff, file2);
			}else {
				if(ff.getName().endsWith(".java")){
					fis = new FileInputStream(ff);
					fos = new FileOutputStream(new File(file2,ff.getName()));
					
					int len = 0;
					byte[] by = new byte[1024];
					while( (len = fis.read(by)) != -1 ){
						fos.write(by, 0, len);
					}
					fis.close();
					fos.close();
				}
			}
		}
		
		
	}

}

猜你喜欢

转载自blog.csdn.net/endless_fighting/article/details/81780978
今日推荐