IO流
分为字节流和字符流
字节流抽象基类: InputStraem(读) ,OutputStream(写)
字符流基类: Reader Writer
FileWriter: 后缀名是父类名。 前缀名是该流对象的功能。
专门用于操作文件的Writer子类对象
使用IO流都应该对其进行异常处理,IO异常是最常见的.要么抛出(throws)要么try-catch处理.两种方式.
import java.io.*; class FileWriterDemo { public static void main(String[] args) throws IOException { /*创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件。 而且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。 其实该步就是在明确数据要存放的目的地。
*/
FileWriter fw = new FileWriter("demo.txt"); //调用write方法,将字符串写入到流中。 fw.write("abcde");
/*刷新流对象中的缓冲中的数据。 将数据刷到目的地中。 fw.flush(); */ /*关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。 将数据刷到目的地中。 和flush区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。
*/
fw.close(); } }
IO异常代码演练处理:
/* IO流异常处理 */ import java.io.*; class FileWriterExceptionDemo { public static void main(String args[]) { FileWriter fw = null; try { fw = new FileWriter("Demo.txt"); fw.write("abcde"); } catch(IOException e) { System.out.println(e.toString()); } finally { try { fw.close(); } catch (IOException e) { System.out.println(e.toString()); } } } }
缓冲技术:BufferedReader 与BufferedWriter.
字符输入/输出流中读取或者写入,缓冲各个字符,从而实现字符、数组和行的高效读取和写入。
可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
加入缓冲可以提高代码的运行效率,实现高效的读取写入数据.一般应用到字符流时,都应该应用缓冲区技术
BufferedWriter代码演示:
import java.io.*; class BufferedWriterDemo { public static void main(String args[]) { FileWriter fw = null; BufferedWriter bw = null; try { fw = new FileWriter("buffer.txt"); //fw.write("abcd"); bw = new BufferedWriter(fw); for(int i = 1; i<5; i++) { bw.write("abc"+i); //bw.write(" "); bw.newLine(); //换行 bw.flush(); } } catch(IOException e) { System.out.println(e.toString()); } finally { try { bw.close(); } catch(IOException e) { System.out.println(e.toString()); } } } }
BufferedReader代码演示:
import java.io.*; class BufferedReadDemo { public static void main(String args[]) throws IOException { //创建一个读取流对象,和文件相关联 FileReader fd = new FileReader("buffer.txt"); //加入缓冲技术,将字符流对象作为参数传递给缓冲对象的构造函数 BufferedReader bufr = new BufferedReader(fd); //readLine()方法读取到最后返回空,因此定义一个字符串为null,以便于循环控制输出各行. String s = null; while((s = bufr.readLine())!= null) { System.out.println(s); } //String s1 = bufr.readLine(); //System.out.println("s1:"+s1 ); bufr.close(); } }