IO流-两个案例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41690324/article/details/81637414

复制多级文件夹案例

package someExample;

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

/*
 * 复制多级文件夹案例
 * 
 * 需求:复制多极文件夹
 * 
 * 数据源:G:\Java\demos
 * 目的地:G:\\
 * 
 * 分析:
 * 		A:封装数据源File
 * 		B:封装目的地File
 * 		C:判断该File是文件还是文件夹
 * 			a:是文件夹
 * 				就在目的地目录下创建该文件夹
 * 				获取该File对象下的所有文件或者文件夹File对象
 * 				遍历得到每一个File对象
 * 				回到C
 * 			b:是文件
 * 				就复制(字节流)	
 */
public class copyFoldersDemo {
	public static void main(String[] args) throws IOException {
		// 封装数据源
		File srcFolder = new File("D:\\a\\demos");
		// 封装目的地
		File destFolder = new File("D:\\");

		// 复制文件夹功能
		copyFolder(srcFolder, destFolder);
	}

	/**
	 * 复制文件夹方法
	 * 
	 * @param srcFolder
	 *            数据源
	 * @param destFolder
	 *            目的地
	 */
	public static void copyFolder(File srcFolder, File destFolder)
			throws IOException {
		// 判断该File是文件还是文件夹
		if (srcFolder.isDirectory()) {
			// 文件夹
			File newFolder = new File(destFolder, srcFolder.getName());
			newFolder.mkdir();

			// 获取该File对象下的所有文件或者文件夹File对象
			File[] fileArray = srcFolder.listFiles();
			// 遍历得到每一个File对象
			for (File file : fileArray) {
				copyFolder(file, newFolder);
			}

		} else {
			// 文件
			File newFile = new File(destFolder, srcFolder.getName());// G:\d.txt

			// 复制文件功能
			copyFile(srcFolder, newFile);
		}
	}

	/**
	 * 复制文件方法
	 * 
	 * @param srcFolder
	 *            数据源
	 * @param newFile
	 *            目的地
	 */
	public static void copyFile(File srcFolder, File newFile)
			throws IOException {
		// 封装数据源
		BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
				srcFolder));
		// 封装目的地
		BufferedOutputStream bos = new BufferedOutputStream(
				new FileOutputStream(newFile));

		// 读写数据
		byte[] bys = new byte[1024];
		int len = 0;
		while ((len = bis.read(bys)) != -1) {
			bos.write(bys, 0, len);
			bos.flush();
		}

		// 释放资源
		bos.close();
		bis.close();
	}
}

把一个文件中的字符串排序后再写入另一个文件案例

package someExample;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;

/*
 * 把一个文件中的字符串排序后再写入另一个文件案例
 * 
 * 需求:已知s.txt文件中有这样的一个字符串:"hcexfgijkamdnoqrzstuvwybpl"
 * 请编写程序读取数据内容,把数据排序后写入ss.txt中
 * 
 * 分析:
 * 		A:把s.txt文件这个文件做出来
 * 		B:读取该文件的内容,存储到一个字符串中
 * 		C:把字符串转为字符数组
 * 		D:对字符数组进行排序
 * 		E:把排序后的字符数组转换为字符串
 * 		F:把字符串再次写入ss.txt中
 */
public class StringDemo {
	public static void main(String[] args) throws IOException {
		// 读取该文件的内容,存储到一个字符串中
		BufferedReader br = new BufferedReader(new FileReader("s.txt"));
		String line = br.readLine();
		br.close();

		// 把字符串转为字符数组
		char[] chs = line.toCharArray();

		// 对字符数组进行排序
		Arrays.sort(chs);

		// 把排序后的字符数组转换为字符串
		String s = new String(chs);

		// 把字符串再次写入ss.txt中
		BufferedWriter bw = new BufferedWriter(new FileWriter("ss.txt"));
		bw.write(s);
		bw.newLine();

		// 释放资源
		bw.close();
	}
}

猜你喜欢

转载自blog.csdn.net/qq_41690324/article/details/81637414