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
代码演示
1 import java.io.File; 2 import java.io.Writer; 3 import java.io.FileWriter; 4 5 public class JavaWriterDemo{ //抛出异常 6 public static void main(String[] args)throws Exception{ 7 File f = new File("test.txt"); //准备文件 8 Writer out = null; //声明Writer 9 out = new FileWriter(f); //通过子类来实例化对象 10 11 String hello = "hello world!!"; //准备写入的字符 12 out.write(hello); //写入文件 13 14 out.close(); //关闭操作 15 } 16 }
运行得到结果
以上都是以上都是对文件进行覆盖写入如想追加我们可以看一下另一种构造方法
FileWriter(String fileName, boolean append);
FileOutputStream(String name, boolean append);
只需在实例化的时候将追加的参数设为true就行了这里就这里就不进行演示了。