IO流小结与练习

来源:互联网 发布:无法打开淘宝宝贝 编辑:程序博客网 时间:2024/05/19 10:35

IO流小结图解


练习1   复制单及文件夹

package cn.itcast_03;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;/* * 需求:复制单极文件夹 *  * 数据源:e:\\demo * 目的地:e:\\test *  * 分析: * A:封装目录 * B:获取该目录下的所有文本的File数组 * C:遍历该File数组,得到每一个File对象 * D:把该File进行复制 */public class CopyFolderDemo {public static void main(String[] args) throws IOException {// 封装目录File srcFolder = new File("e:\\demo");// 封装目的地File destFolder = new File("e:\\test");// 如果目的地文件夹不存在,就创建if (!destFolder.exists()) {destFolder.mkdir();}// 获取该目录下的所有文本的File数组File[] fileArray = srcFolder.listFiles();// 遍历该File数组,得到每一个File对象for (File file : fileArray) {// System.out.println(file);// 数据源:e:\\demo\\e.mp3// 目的地:e:\\test\\e.mp3String name = file.getName(); // e.mp3File newFile = new File(destFolder, name); // e:\\test\\e.mp3copyFile(file, newFile);}}private static void copyFile(File file, File newFile) throws IOException {BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));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.close();bis.close();}}

练习2 复制多级文件夹、

package cn.itcast_05;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;/* * 需求:复制多极文件夹 *  * 数据源:E:\JavaSE\day21\code\demos * 目的地:E:\\ *  * 分析: * A:封装数据源File * B:封装目的地File * C:判断该File是文件夹还是文件 * a:是文件夹 * 就在目的地目录下创建该文件夹 * 获取该File对象下的所有文件或者文件夹File对象 * 遍历得到每一个File对象 * 回到C * b:是文件 * 就复制(字节流) */public class CopyFoldersDemo {public static void main(String[] args) throws IOException {// 封装数据源FileFile srcFile = new File("E:\\JavaSE\\day21\\code\\demos");// 封装目的地FileFile destFile = new File("E:\\");// 复制文件夹的功能copyFolder(srcFile, destFile);}private static void copyFolder(File srcFile, File destFile)throws IOException {// 判断该File是文件夹还是文件if (srcFile.isDirectory()) {// 文件夹File newFolder = new File(destFile, srcFile.getName());newFolder.mkdir();// 获取该File对象下的所有文件或者文件夹File对象File[] fileArray = srcFile.listFiles();for (File file : fileArray) {copyFolder(file, newFolder);}} else {// 文件File newFile = new File(destFile, srcFile.getName());copyFile(srcFile, newFile);}}private static void copyFile(File srcFile, File newFile) throws IOException {BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));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.close();bis.close();}}

练习3 复制指定目录下的指定文件,并修改后缀名。

package cn.itcast_04;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FilenameFilter;import java.io.IOException;/* * 需求:复制指定目录下的指定文件,并修改后缀名。 * 指定的文件是:.java文件。 * 指定的后缀名是:.jad * 指定的目录是:jad *  * 数据源:e:\\java\\A.java * 目的地:e:\\jad\\A.jad *  * 分析: * A:封装目录 * B:获取该目录下的java文件的File数组 * C:遍历该File数组,得到每一个File对象 * D:把该File进行复制 * E:在目的地目录下改名 */public class CopyFolderDemo {public static void main(String[] args) throws IOException {// 封装目录File srcFolder = new File("e:\\java");// 封装目的地File destFolder = new File("e:\\jad");// 如果目的地目录不存在,就创建if (!destFolder.exists()) {destFolder.mkdir();}// 获取该目录下的java文件的File数组File[] fileArray = srcFolder.listFiles(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {return new File(dir, name).isFile() && name.endsWith(".java");}});// 遍历该File数组,得到每一个File对象for (File file : fileArray) {// System.out.println(file);// 数据源:e:\java\DataTypeDemo.java// 目的地:e:\\jad\DataTypeDemo.javaString name = file.getName();File newFile = new File(destFolder, name);copyFile(file, newFile);}// 在目的地目录下改名File[] destFileArray = destFolder.listFiles();for (File destFile : destFileArray) {// System.out.println(destFile);// e:\jad\DataTypeDemo.java// e:\\jad\\DataTypeDemo.jadString name =destFile.getName(); //DataTypeDemo.javaString newName = name.replace(".java", ".jad");//DataTypeDemo.jadFile newFile = new File(destFolder,newName);destFile.renameTo(newFile);}}private static void copyFile(File file, File newFile) throws IOException {BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));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.close();bis.close();}}