package IO基本概念; import java.io.FileWriter; import java.io.IOException; /**IO流用来处理设备间数据的传输:例如 硬盘存储数据(存储时间长),放到内存中读取(临时存储,但是处理效率快) * 1、从硬盘向内存中输入 就是reader-->输入流 2、 从内存向硬盘写入 就是Writer-->输出流 * 输入输出流相对于内存设备而言;将外设设备上的设备读取到内存中叫做输入,将内存的数据写入到外设设备上叫做输出 * 按照操作数据分类:字节流、字符流 * 字节流:可以操作一切数据 * 字符流:字节流读取文字字节数据后,查找指定的编码表获取对应的文字再对这个文字进行操作;简单说:字节流+编码表 * * 字节流的顶层父类: * 1、InputStream 2、OutputStream * 字符流的顶层父类: * 1、Reader 2、Writer * 如果要操作文件优先考虑字符流;既然确定一个子类用来实例化Writer; * 这个子类就是FileWriter; * */ public class IODemo_1 { public static void main(String[] args) throws IOException { //创建一个可以往文件写入字符数据的字符流对象。 /* * 既然是王一个文件中写入文字数据,那么在创建对象时,就必须明确该文件(用于存储数据) * * */ String LINE_SEPARATOR=System.getProperty("line.separator"); FileWriter fw1 = new FileWriter("demo.txt",true);//如果加上true可以续写 fw1.write("老父亲"+LINE_SEPARATOR+"老母亲"); fw1.write("平安"); //这个时候数据在临时存储缓冲区。 fw1.flush(); //刷新后,数据写入预期文件 fw1.close(); //关闭流,同时会执行一个flush方法。 } }
package IO基本概念; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; /*字符读取流 FileReader*/ public class ReaderDemo_1 { public static void main(String[] args) { //1、创建一个能够读取字符数据的流对象 FileReader f1 = null; try { f1=new FileReader("demo.txt"); try { int ch=0; while((ch=f1.read())!=-1) System.out.println(ch); } catch (IOException e) { e.printStackTrace(); } } catch (FileNotFoundException e) { e.printStackTrace(); } } }
package IO基本概念; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; /*字符读取流 FileReader*/ public class ReaderDemo_2 { public static void main(String[] args) { //1、创建一个能够读取字符数据的流对象 FileReader f1 = null; try { f1=new FileReader("demo.txt"); try { //创建字符数组 char[]ch=new char[1024*5]; int num=f1.read(ch); System.out.println(num+":"+new String(ch,0,num)); } catch (IOException e) { e.printStackTrace(); } } catch (FileNotFoundException e) { e.printStackTrace(); } } }
package IO基本概念; import java.io.FileWriter; import java.io.IOException; public class IOExceptionDemo { public static void main(String[] args) { String LINE_SEPARATOR=System.getProperty("line.separator"); FileWriter fw1=null; try { fw1 = new FileWriter("demo.txt"); fw1.write("老父亲" + LINE_SEPARATOR + "老母亲"); } catch (Exception e) { System.out.println(e.toString()); }finally{ try { if(fw1!=null) fw1.close(); } catch (IOException e) { throw new RuntimeException("关闭失败!!"); } } } }
package IO基本概念; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; /**将E盘propertise.txt文件复制到D盘 * 思路: * 1、读取propertise.txt文件 * 2、D盘创建文件,将读取的内容写入 * 3、关闭流 * */ public class IOTest_1 { public static void main(String[] args) throws IOException { test_2(); } private static void test_2() { FileReader fr2 = null; FileWriter fw2 = null; try{ fr2 = new FileReader("E:\\propertise.txt"); fw2 = new FileWriter("D:\\propertise.txt"); char[]chs = new char[1024*5]; int len = 0; while((len=fr2.read(chs))!=-1) fw2.write(chs,0,len); }catch(IOException e){ System.out.println(e.toString()); }finally { if(fr2!=null) try { fr2.close(); } catch (IOException e) { e.printStackTrace(); } if(fw2!=null) try { fw2.close(); } catch (IOException e) { e.printStackTrace(); } } } public static void test_1()throws IOException{ FileReader fr1 = new FileReader("E:\\propertise.txt"); FileWriter fw1 = new FileWriter("D:\\propertise.txt"); int ch=0; while((ch=fr1.read())!=-1){ fw1.write(ch); } fr1.close(); fw1.close(); } }