IO流总结
明确输入输出来选用流对象:
package javaBase.io.stream; import java.io.*; /**IO总结 * 步骤1:明确源和目的 * 源: 输入流 InputStream Reader * 目的: 输出流 OutputStream Writer * 步骤2:操作的数据是不是文本 * 文本:字符流 如果要指定编码如UTF-8,只能通过转换流 * 非文本:字节流 * 步骤3:通过设备选取具体对象 * 源:内存、硬盘、键盘 * 目的:内存、硬盘、控制台 * @author xukunn * */ public class IOSummary { public static void main(String[] args) throws IOException { // copyText(); copyMedia(); } /** * 复制文本文件 */ public static void copyText() throws IOException{ BufferedReader br = new BufferedReader(new FileReader("man.txt") ); BufferedWriter bw = new BufferedWriter(new FileWriter("man_copy.txt")); String line = null; while((line = br.readLine())!=null){ bw.write(line); bw.newLine(); bw.flush(); } br.close(); bw.close(); } /** * 复制非文本文件 */ public static void copyMedia() throws IOException{ InputStream in = new FileInputStream("man.mp3"); OutputStream out = new FileOutputStream("man_copy.mp3"); byte[] buff = new byte[1024*8]; int len = 0; while((len =in.read(buff))!=-1){ out.write(buff,0,len); } in.close(); out.close(); } /* 模板:键盘写入硬盘*/ public static void inOut() throws IOException{ //源:键盘 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //目的:硬盘 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("man.txt"))); String line = null; while((line = br.readLine())!=null){ if("over".equals(line))//结束标记 break; bw.write(line); bw.newLine();//换行 bw.flush();//刷缓冲 } br.close(); bw.close(); } }
递归输出目录文件
package javaBase.io.others; import java.io.*; /* * 递归注意: * 1,结束条件 * 2,控制递归次数,因为每一次都开辟一个函数空间,小心栈内存溢出 */ public class FileShow { public static void main(String[] args) { File f = new File("E:\\Admin\\workspace\\itHeima"); showDir(f); // toBin(6); } /* * 递归显示目录下面的文件,包括目录下的目录 */ public static void showDir(File file){ System.out.println(file);//打印目录 File[] files = file.listFiles(); for(int i=0;i<files.length;i++){ if(files[i].isDirectory()){ showDir(files[i]); }else System.out.println(files[i]);//打印文件 } } /* * 函数递归将一个数转成2进制打印出来 */ public static void toBin(int i){ if(i>0){ toBin(i/2); System.out.print(i%2); } } }
将一个路径下的所有java文件的绝对路径存储到一个文件中
package javaBase.io.others; import java.io.*; import java.util.*; /* * 将一个路径下的所有java文件的绝对路径存储到一个文件中 * 中间用一个list存一下 */ public class ListJavaFiles { public static void main(String[] args) throws IOException{ File dir = new File("E:\\Admin\\workspace\\itHeima"); List<File> list = new ArrayList<File>(); fileToList(dir, list); // System.out.println(list.size()); File file = new File(dir,"list.txt"); listToText(list, file.toString()); } /* * 文件写入list集合 */ public static void fileToList(File file,List<File> list){ File[] files = file.listFiles(); for(File f:files){ if(f.isDirectory()) fileToList(f,list); else{ if(f.getName().endsWith(".java")){ list.add(f); } } } } /* * 写入文本文件中 */ public static void listToText(List<File>list,String fileName) throws IOException{ BufferedWriter bw = null; try { bw = new BufferedWriter(new FileWriter(fileName)); for(File file:list){ bw.write(file.getAbsolutePath()); bw.newLine(); bw.flush(); } } catch (IOException e) { throw e; }finally{ try { if(bw!=null){ bw.close(); } } catch (IOException e) { throw e; } } } }