字节流
// 字节流(以stream结尾的),要注意的一点是字节流可以转成是字符流,但是字符流转换成字节流没有 //什么意义了,以下步骤就可以做到写入一个流,接着读出在一个新的文件,把以前的文件的内容放在新建的那个文件 File file = new File("F:\1117\ceshi.txt"); File fileout = new File("F:\1117\ceshi_new_reader.txt"); InputStream in = null; //一开始定义的是一个没有对象的输入流,输出流 OutputStream out = null; int result = -1; //判断是否几经读到内容的结尾 try { in = new FileInputStream(file); //把文件传入 out = new FileOutputStream(fileout); while ((result = in.read()) != -1) { //字节流一个字节一个字节的读取,根据read方法 System.out.println((char)result); out.write(result); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { //一定会执行的语句 try { in.close(); out.flush(); out.close(); } catch (IOException e) { e.printStackTrace(); } }
字符流
//字符流,字符流(以Reader, Writer结尾的),一个字符占两个字节,以一个字符为一个单位 File file = new File("F:\1117\ceshi.txt"); File fileout = new File("F:\1117\ceshi_new_reader.txt"); try { Reader r = new FileReader(file); Writer w = new FileWriter(fileout); int result = -1; while((result = r.read()) != -1) { System.out.println((char)result); w.write(result); } r.close(); w.flush(); //在使用流的时候的一个良好的习惯, 先flush, 再close w.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
文件类:
java.io.File
用递归的方法列出目录下所有的内容
public static void main(String[] args) { File file = new File("f:\1117"); list(file); } public static void list(File file ) { if (file.isDirectory()) { //判断是否为目录 File[] files = file.listFiles(); //获取当前这个路径下面所有的文件和文件夹,目录下面还有子目录 for (File f : files) { //遍历,取出File数组里的 if (f.isDirectory()) { System.out.println(f.getName()); //目录里面还有文件 list(f); //递归,自身调用自身, }else { //不是目录的话,就直接打印文件名 System.out.println(f.getName()); } } }else { //不是目录,直接打印文件名 System.out.println(file.getName()); } }
递归的思想求阶乘
public static int fact( int n) { //递归求阶乘 if (n==1) { return 1; }else { return n*fact(n - 1); } }
处理流 Buffered
public static void main(String[] args) { File file = new File("F:\1117\ceshi.txt"); try { Reader r = new FileReader(file); BufferedReader br = new BufferedReader(r);//给Reader套一个管道,相当于处理流 Writer w = new FileWriter("F:\1117\ceshi_new.txt",true); //加true是追加内容 BufferedWriter bw = new BufferedWriter(w); String str = null; while ((str = br.readLine()) != null) { //每次读一行 bw.write(str); bw.newLine(); //换行 } br.close(); //处理流关闭,里面的字符流也相应关闭 bw.flush(); bw.close(); } catch (FileNotFoundException e) { //捕获异常 e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }