IO流(字节输出流)
设备和设备之间的传输(读写)
IO流的分类:
按流的方向分为:
输入流 --->读取数据
输出流 --->写出数据
按数据类型:
字节输入流:InputStream ----读数据
字节输出流:OutputStream ----写数据
字符输入流:Reader
字符输出流:Writer
需求:写一个文件,这个文件内容是:hello,io:
分析:写这样一个文件:最常用的是使用字符流,但是字符流实在字节流之后才产生的,所以:先讲字节流中的字节输出流,后面讲字符流
OutPutStream:该类是一个抽象类,不能实例化,现在使用他的对象进行写数据
现在的需求:针对的是文件: File 联想起来:FileOutPutStream
对于输出流和输入流来说,他们的基类的子类的后缀名是一下这种形式
XXXOutputStream
XXXInputStream
XXXReader
xxxWriter
写数据的具体步骤:
1)创建字节输出流对象
看FileOutputStream:具体类的里面的构造方法:
public FileOutputStream(File file):指定一个File对象
public FileOutputStream(String name):直接指定文件名称
2)写数据
3)释放资源
文件字节输出流对象中的写数据的方法:
public void write(int b):写入一个字节
public void write(byte[] b):写一个字节数组
public void write(byte[] b, int index,int len):写一部分字节数组(常用)
代码:
public static void main(String[] args) throws IOException {
//1)创建字节输出流对象
FileOutputStream fos = new FileOutputStream("e:\\a.txt");
//2)写数据
fos.write("hello,".getBytes());
fos.write("io".getBytes());//hello,io
//3)释放资源
fos.close();
FileOutputStream fos1 = new FileOutputStream("e:\\a.txt");
byte[] b = {65,66,67,68,69};
fos1.write(b, 2, 2);//CD
fos1.close();
}
如何实现一个追加操作
构造方法:public FileOutputStream(File file, boolean append)
如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处(可以解决换行问题)
代码:
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("e:\\a.txt",true);
for(int x = 0;x<10;x++){
fos.write("Hello".getBytes());
fos.write("\r\n".getBytes());
}
fos.close();
/*
* Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
* */
}