1.IO流用来处理设备之间的数据传输
方向:硬盘通过“读reader”完成对内存的读取,内存通过“写writer”完成对硬盘的写入
2.Java对数据的操作是通过流的方式
3.Java用于操作流的对象都在IO包中
4.流按操作数据分为两种:字节流和字符流
--字符流的由来:
》》字节流读取文字字节数据后,不直接操作而是先查指定的编码表。获取对应的文字。再对这个文字进行操作。简单说:字符流=字节流+编码表
--字节流的两个顶层父类:1.InputStream 2.OutputStream
--字符流的两个顶层父类:1.Reader 2.Writer
--字符流:
》》要操作文字数据,优先考虑字符流
》》而且要将数据从内存写到硬盘上,要使用字符流中的输出流。Writer
-操作文件的关键字为FileWriter,用于写入数据流。具体格式:FileWriter fw=new FileWriter(“demo.txt”,true);这是目标文件名,创建对象时会抛出个异常IOexception,这是因为文件名或许没有正确的路径,会不安全。如果路径文件不存在,则自动创建,如果存在,则会覆盖
小细节:在java里实现换行操作可以用\r,或者用LINE_SEPARATOR创建变量,调用System方法
此处代码
public class IOExceptionDemo { private static final String LINE_SEPARATOR = System.lineSeparator(); public static void main(String[] args) { FileWriter fw = null; try { fw = new FileWriter("demo.txt", true); fw.write("abcde" + LINE_SEPARATOR + "hahaha"); } catch (IOException e) { System.out.println(e.toString()); } finally { if (fw != null) try { fw.close(); } catch (IOException e) { throw new RuntimeException("关闭失败"); } } } }
这是重点,FileWriter处理异常的方式!!很重要
读取字符数据的关键字FileReader,具体格式 FileReader fr=new FileReader(“demo.txt”);必须保证文件是存在的,再调用read方法读取
read读取方法有两种方式:
public class Test11 { public static void main(String[] args) throws IOException { FileReader fr=new FileReader("demo.text"); int ch=fr.read(); System.out.println(ch); fr.close(); } }
这是方式一,挨个字符读取文件内的字符
public class Test11 { public static void main(String[] args) throws IOException { FileReader fr=new FileReader("demo.text"); char[] buf=new char[3]; int num=fr.read(buf);//将读取到的字符存储到数组中 System.out.println(num+" "+buf.toString()); int num1=fr.read(buf);//将读取到的字符存储到数组中 System.out.println(num+" "+buf.toString()); int num2=fr.read(buf);//将读取到的字符存储到数组中 System.out.println(num+" "+buf.toString()); } }
这是方式二,
两者的区别是方式2可以一次读取多个,方式1读取1个字符。
方式2有个细节就是当数组定义为3个时,每次重新读取的时候都放在同一个数组中,所以要覆盖先前读取的数据,然后输出的结果会覆盖,这个要注意!!!!
在这再说说复制的实现过程:
原理:读取c盘文件中的数据,然后再写入d盘文件中,连读带写
5.流按流向分为:输入流,输出流