您的位置:首页 > 其它

IO流

2015-08-26 16:32 267 查看
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("\r\n");
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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: