一 IO流总结
练习一
package Stream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; /* * IO流复制文本文件的五种方式 * 数据源 * limi.txt 字符流 读 Reader InputStreamReader(FileReader) * * 目的地 * zxx.txt 字符流 写 Writer OutputStreamWriter(FileWriter) */ public class IOstearmDemotest01 { public static void main(String[] args) throws IOException { method1();//字符流一次读取一个字符 // method2();//字符流一次读取一个字符数组 // method3();//缓冲流的特殊功能 // method4();//缓冲流一次读取一个字符 // method5();//缓冲流一次读取一个字符数组 } /**********11111111111111111111111111111**********************/ public static void method1() throws IOException { //数据源 FileReader fr1 = new FileReader("limi.txt"); //目的地 FileWriter fw1 = new FileWriter(" zxx.txt"); //一次读取一个字符 int by =0 ; while((by=fr1.read())!=-1){ fw1.write((char)by); } //释放资源 fr1.close(); fw1.close(); } /**********222222222222222222222222 **********************/ public static void method2() throws IOException { //数据源 FileReader fr2 = new FileReader("limi.txt"); //目的地 FileWriter fw2 = new FileWriter(" zxx.txt"); //一次读取一个字符数组 char[] ch = new char[1024]; int len = 0; while((len=fr2.read(ch))!=-1){ fw2.write(ch,0,len); } //释放资源 fr2.close(); fw2.close(); } /**********333333333333333333333333333*********************/ public static void method3() throws IOException { //数据源 BufferedReader br3 = new BufferedReader(new FileReader("limi.txt")); //目的地 BufferedWriter bw3 = new BufferedWriter(new FileWriter("zxx.txt")); //特殊功能 String len = null ; while((len =br3.readLine())!= null){ bw3.write(len); bw3.newLine(); } //释放资源 br3.close(); bw3.close(); } /**********4444444444444444444444444444*********************/ public static void method4() throws IOException { //数据源 BufferedReader br4 = new BufferedReader(new FileReader("limi.txt")); //目的地 BufferedWriter bw4 = new BufferedWriter(new FileWriter("zxx.txt")); //一次读取一个字符串 //一次读取一个字符 int by =0 ; while((by=br4.read())!=-1){ bw4.write((char)by); } //释放资源 br4.close(); bw4.close(); } /**********5555555555555555555555555555555555*********************/ public static void method5() throws IOException { //数据源 BufferedReader br5 = new BufferedReader(new FileReader("limi.txt")); //目的地 BufferedWriter bw5 = new BufferedWriter(new FileWriter("zxx.txt")); //一次读取一个字符串的一部分 char[] ch = new char[1024]; int len = 0; while((len=br5.read(ch))!=-1){ bw5.write(ch,0,len); } //释放资源 br5.close(); bw5.close(); } }
练习二
package Stream; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /* * IO流复制图片的四种方式 * 数据源 * 华清池.jpg 字节流 读 InputStream FileInputStream * * 目的地 * 东方不败.jpg 字节流 写 OutputStream FileOutputStream */ public class IOstearmDemotest02 { public static void main(String[] args) throws IOException { // method1();//字节流一次读取一个字节 // method2();//字节流一次读取一个字节数组 // method3();//字节缓冲流一次读取一个字节 method4();//字节缓冲流一次读取一个字节数组 } /**********11111111111111111111111111111**********************/ public static void method1() throws IOException { //数据源 FileInputStream fi1 = new FileInputStream("华清池.jpg"); //目的地 FileOutputStream fo1 = new FileOutputStream("东方不败.jpg"); //一次读取一个字节 int by =0 ; while((by=fi1.read())!= -1){ fo1.write(by); } //释放资源 fi1.close(); fo1.close(); } /**********222222222222222222222222 **********************/ public static void method2() throws IOException { //数据源 FileInputStream fi2 = new FileInputStream("华清池.jpg"); //目的地 FileOutputStream fo2 = new FileOutputStream("东方不败.jpg"); //一次读取一个字节数组 byte[] ch = new byte[1024]; int len = 0; while((len=fi2.read(ch))!=-1){ fo2.write(ch,0,len); } //释放资源 fi2.close(); fo2.close(); } /**********333333333333333333333333333*********************/ public static void method3() throws IOException { //数据源 BufferedInputStream bis1 = new BufferedInputStream(new FileInputStream("华清池.jpg")); //目的地 BufferedOutputStream bos1 = new BufferedOutputStream(new FileOutputStream("东方不败.jpg")); //一次读取一个字节 int by =0 ; while((by=bis1.read())!=-1){ bos1.write(by); } //释放资源 bis1.close(); bos1.close(); } /**********44444444444444444444444444444444*********************/ public static void method4() throws IOException { //数据源 BufferedInputStream bis2 = new BufferedInputStream(new FileInputStream("华清池.jpg")); //目的地 BufferedOutputStream bos2 = new BufferedOutputStream(new FileOutputStream("东方不败.jpg")); //一次读取一个字符串的一部分 byte[] ch = new byte[1024]; int len = 0; while((len=bis2.read(ch))!=-1){ bos2.write(ch,0,len); } //释放资源 bis2.close(); bos2.close(); } }
练习三 把ArrayList集合中的字符串数据存储到文本文件
package Stream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.util.ArrayList; /* * 把ArrayList集合中的字符串数据存储到文本文件 * 分析 * 数据源 * ArrayList集合中的字符串数据 字符流 * * 目的地 * 文本文件 字符流 */ public class IOstearmDemotest03 { public static void main(String[] args) throws IOException{ //首先要有集合封装数据源 ArrayList<String> arr = new ArrayList<String> (); arr.add("hello"); arr.add("world"); arr.add("java"); //封装目的地 BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt")); for(String s:arr){ bw.write(s); bw.newLine(); bw.flush(); } bw.close(); } }
练习四 把文本中的文件存储到集合中
package Map.HashMap; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; /*把文本中的文件存储到集合中 * * 分析 * 数据源 文本文件 * a.txt 字符流 * * 目的地 集合 * ArrayList * */ public class IOStreamDemo{ public static void main(String[] args) throws IOException { //数据源 BufferedReader br = new BufferedReader(new FileReader("a.txt")); //目的地 ArrayList<String> array = new ArrayList<String>(); char[] ch = new char[1024]; String line = null; while((line=br.readLine())!= null){ array.add(line); } ch.clone(); //遍历集合 for(String s:array){ System.out.println(s); } } }
练习五:一个文本文件存储了几个名称,请写一个程序随机获取一个人的名字
package Map.HashMap; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Random; /*我有一个文本文件存储了几个名称,请写一个程序随机获取一个人的名字 * 分析: * A:把文本文件中的数据存储到集合中 * B:随机产生一个索引 * C:根据索引获取一个值 * * */ public class IOStreamDemo001{ public static void main(String[] args) throws IOException { //数据源 BufferedReader br = new BufferedReader(new FileReader("a.txt")); //目的地 ArrayList<String> array = new ArrayList<String>(); char[] ch = new char[1024]; String line = null; while((line=br.readLine())!= null){ array.add(line); } ch.clone(); //获取随机数组 Random r = new Random(); int index = r.nextInt(array.size());//产生的随机数大小在0-size之间 //根据索引获取随机数的值 String name = array.get(index); System.out.println("该幸运者是 "+name); } }
练习六: 复制单级文件夹
package Map.HashMap; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Random; /*复制单级文件夹 * 数据源:e://demo * 目的地:e://test * * 分析 * A:封装目录 * B: 获取该目录下的所有文件的File数组 * C:遍历File数组得到每一个File对象 * D:把该File进行复制 * 注意文件会自动创建,而文件夹不会 * * */ public class IOStreamDemo002{ public static void main(String[] args) throws IOException{ // A:封装目录 File srcFolder = new File("e://demo"); // B:封装目的地 File destFolder = new File("e://test"); //如果目的地文件夹不存在,就创建 if (!destFolder.exists()) { destFolder.mkdir(); } // 获取该目录下的所有文本的File数组 File[] fileArray = srcFolder.listFiles(); for(File f:fileArray){ // e:\demo\IoDemo09.java String name = f.getName();//IoDemo09.java File newFile = new File(destFolder, name);//e:\test\IoDemo09.java copeFile(f,newFile); } } public static void copeFile(File f, File newFile) throws IOException { BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f)); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile)); ArrayList<File> ary = new ArrayList<File>(); byte[] by = new byte[1024]; int len = 0; while((len = bis.read(by))!=-1){ bos.write(by, 0, len); } bos.close(); bis.close(); } }
练习七:复制指定目录下指定文件,并修改后缀名
package Map.HashMap; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Random; /*复制指定目录下指定文件,并修改后缀名 * * */ public class IOStreamDemo003{ public static void main(String[] args) throws IOException { File srcFolder = new File("e://io"); File destFolder = new File("e://wy"); if(!destFolder.exists()){ destFolder.mkdir(); } File[] fileFolder = srcFolder.listFiles(); for(File file:fileFolder){ if (file.isFile()&& file.getName().endsWith(".java")) { String name = file.getName(); File newFile = new File(destFolder, name); copyFile(file,newFile); } //在目的地目录下改名 File[] filefolder = destFolder.listFiles(); for(File F:filefolder){ // System.out.println(F);//e:\wy\IoDemo04.java String name = F.getName(); // System.out.println(name); String newname = name.replace(".java", ".jad"); File newFile1 = new File(destFolder,newname); System.out.println(newFile1); } } } public static void copyFile(File file, File newFile) throws IOException { BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile)); byte[] by = new byte[1024]; int len = 0; while((len = bis.read(by))!= -1 ){ bos.write(by, 0, len); } bis.close(); bos.close(); } }
练习八:复制多级文件夹
扫描二维码关注公众号,回复:
1674236 查看本文章
package IO; 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; /** * 需求:复制多级文件夹 * *数据源 F:\zxx\demos *目的地 F:\\ * 分析 * A:封装数据源File * B:封装目的地File * C:判断该File是文件夹还是文件 * a 是文件夹 * 就在目的地目录下创建该文件夹 * 获取该File对象下的所有文件或文件夹File对象 * 遍历每一个File对象 * 回到C * b 是文件 * 就复制(字节流) * **/ public class StreamDemo01 { public static void main(String[] args) throws IOException { //封装数据源File File srcFile = new File("F:\\zxx\\demos"); //封装目的地File File descFile = new File("F:\\"); //复制文件夹功能 CopeFoledor(srcFile,descFile); } public static void CopeFoledor(File srcFile, File descFile) throws IOException { //判断该File是文件夹还是文件 if(srcFile.isDirectory()){ //文件夹 File newFodler = new File(descFile,srcFile.getName()); newFodler.mkdir(); //获取该File对象下的所有文件或文件夹File对象 File[] file = srcFile.listFiles(); for(File f:file){ CopeFoledor(f,newFodler); } }else{ //文件 File newFile = new File(descFile,srcFile.getName()); CopeFile(srcFile,newFile); } } //专门复制文件 public static void CopeFile(File srcFile, File newFile) throws IOException { BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile)); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile)); byte[] cr = new byte[1024]; int len = 0; while((len= bis.read(cr))!= -1){ bos.write(cr, 0, len); } bis.close(); bos.close(); } }