您的位置:首页 > 编程语言 > Java开发

三、JAVA中的IO流,输出流

2015-05-30 21:35 471 查看
  JAVA中java.io.*;提供数据的流式输入与输出的相关类,IO流是对于输入与输出的抽象,JAVA把这些不同来源和目标的数据都统一抽象为数据流。将输入与输出的数据统一为流的好处是程序不必关心要读取得是文件,还是网络中的数据,而是统一当作IO流来处理。

  IO流又分为字符流字节流,主要区别

字节流按字节处理(一次处理一个字节)使用类OutputStream
字符流按字符处理(一次处理一个字符即两个字节)使用类Writer
  其实字节流与字符流处理十分相似(即每次处理的单位不同),好多书上也是将这两个放在一起来讲。

  好了现在开始码代码!

首先是字节操作:

  主要使用的类就是

      public abstract class OutputStream extends Object implements Closeable, Flushable

  这个类是抽象的没法进行实例化所以要用其子类通过向上转型来进行实例化,因为接下来要演示操作的是文件所以用的子类是

      public class FilterOutputStream extends OutputStream

  代码演示

import java.io.*;

public class JavaOutputStreamDemo{
public static void main(String[] args)throws Exception{
File f = new File("test.txt");            //获取操作文件
OutputStream out = null;                //声明OutputStream
out = new FileOutputStream(f);            //通过子类的向上转型来实例化对象

String hello = "hello world!!!";        //准备要写入文件的数据
byte b[] = hello.getBytes();            //将字符串转换为字节数组

out.write(b);                            //写入文件

out.close();                        //关闭操作
}
}


  test.txt是不需要提前创建的程序会先创建文件

  打开test.txt我们机会看到刚才写入的数据

  


接下来是字符流操作:

 主要使用的类是

    public abstract class Writer extends Object

  同样我们需要通过其子类通过向上转型来实例化

public class FileWriter extends OutputStreamWriter

这样看也许不明显,可以看一下继承树

java.lang.Object

+-java.io.Writer

+-java.io.OutputStreamWriter

+-java.io.FileWriter

代码演示

import java.io.File;
import java.io.Writer;
import java.io.FileWriter;

public class JavaWriterDemo{                                    //抛出异常
public static void main(String[] args)throws Exception{
File f = new File("test.txt");                    //准备文件
Writer out = null;                                //声明Writer
out = new FileWriter(f);                    //通过子类来实例化对象

String hello = "hello world!!";                //准备写入的字符
out.write(hello);                            //写入文件

out.close();                                //关闭操作
}
}


运行得到结果



以上都是以上都是对文件进行覆盖写入如想追加我们可以看一下另一种构造方法

    FileWriter(String fileName, boolean append);

    FileOutputStream(String name, boolean append);

只需在实例化的时候将追加的参数设为true就行了这里就这里就不进行演示了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: