IO(Input Output)
一,特点
1,输入流和输出流相对于内存设备而言.
将外设中的数据读取到内存中:输入
将内存的数写入到外设中:输出。
2,字符流的由来:其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表。获取对应的文字。在对这个文字进行操作。简单说:字节流+编码表
3,字节流的两个顶层父类:1,InputStream 2,OutputStream.
4,,字符流的两个顶层父类:1,Reader 2,Writer
二,字符流
1,writer
1)filewriter类
1,创建对象:FileWriter fw = new FileWriter("demo.txt",true);
既然是往一个文件中写入文字数据,那么在创建对象时,就必须明确该文件(用于存储数据的目的地)。如果文件不存在,则会自动创建,如果文件存在,则会被覆盖。
2,write()
调用Writer对象中的write(string)方法,写入数据,其实数据写入到临时存储缓冲区中。
3,flush()
进行刷新,将数据直接写到目的地中
4,close()
关闭流,关闭资源。在关闭前会先调用flush刷新缓冲中的数据到目的地,
5,换行
System.getProperty("line.separator")
6,续写
如果构造函数中加入true,可以实现对文件进行续写
7,IO异常处理
public class IOExceptionDemo { private static final String LINE_SEPARATOR = System .getProperty("line.separator"); public static void main(String[] args) { FileWriter fw = null; try { fw = new FileWriter("k:\\demo.txt"); fw.write("abcde" + LINE_SEPARATOR + "hahaha"); } catch (IOException e) { System.out.println(e.toString()); } finally { if (fw != null) try { fw.close(); } catch (IOException e) { // code.... throw new RuntimeException("关闭失败"); } } } }
2,Reader
1)fileReader类
1,创建对象;FileReader fr = new FileReader("demo.txt")
在创建读取流对象时,必须要明确被读取的文件。一定要确定该文件是存在的,用一个读取流关联一个已存在文件
2,读取字符
int ch = 0; while((ch=fr.read())!=-1){ System.out.println((char)ch); }
3,读取字符方法二
char[] buf = new char[1024]; int len = 0; while((len=fr.read(buf))!=-1){ System.out.println(new String(buf,0,len)); }