字节流是由字节组成的,字符流是由字符组成的. Java里字符由两个字节组成.字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的但实际中很多的数据是文本,又提出了字符流的概念,字节输出流OutputStream就是典型的两种字节流之一。
说到字节输出流OutputStream就不得不提到OutputStream抽象类,此类是表示输出字节流的所有类的超类。操作的数据都是字节,定义了输出字节流的基本共性功能方法。
java.io.OutputStream:字节输出流,此抽象类是表示输出字节流的所有类的超类。定义了一些子类共性的成员方法:
- public void close() :关闭此输出流并释放与此流相关联的任何系统资源。
- public void flush() :刷新此输出流并强制任何缓冲的输出字节被写出。
- public void write(byte[] b):将 b.length字节从指定的字节数组写入此输出流。
- public void write(byte[] b, int off, int len) :从指定的字节数组写入 len字节,从偏移量 off开始输出到此输出流。
- public abstract void write(int b) :将指定的字节输出流。
FileOutputStream(String name)创建一个向具有指定名称的文件中写入数据的输出文件流。
FileOutputStream(File file) 创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
参数:写入数据的目的
String name:目的地是一个文件的路径
File file:目的地是一个文件
1.创建一个FileOutputStream对象
2.会根据构造方法中传递的文件/文件路径,创建一个空的文件
3.会把FileOutputStream对象指向创建好的文件
输出流中定义都是写write方法,如下图:
虽然参数为int类型四个字节,但是只会保留一个字节的信息写出 ,
当完成流的操作时,必须调用close()方法,释放系统资源。
OutputStream有很多子类,其中子类FileOutputStream可用来写入数据到文件。
FileOutputStream类,即文件输出流,是用于将数据写入 File的输出流。
FileOutputStream类写入数据到文件中
将数据写到文件中,代码演示:
public class FileOutputStreamDemo {
public static void main(String[] args) throws IOException {
//需求:将数据写入到文件中。
//创建存储数据的文件。
File file = new File("c:\\file.txt");
//创建一个用于操作文件的字节输出流对象。一创建就必须明确数据存储目的地。
//输出流目的是文件,会自动创建。如果文件存在,则覆盖。
FileOutputStream fos = new FileOutputStream(file);
//调用父类中的write方法。
byte[] data = "abcde".getBytes();
fos.write(data);
//关闭流资源。
fos.close();
}
}
我们直接new FileOutputStream(file)这样创建对象,写入数据,会覆盖原有的文件,那么我们想在原有的文件中续写内容怎么办呢?
继续查阅FileOutputStream的API。发现在FileOutputStream的构造函数中,可以接受一个boolean类型的值,如果值true,就会在文件末位继续添加。
回车符\r和换行符\n :
回车符:回到一行的开头(return)
换行符:下一行(newline)
Windows系统里,每行结尾是 回车+换行 ,即\r\n;
Unix系统里,每行结尾只有换行,即\n;
Mac系统里,每行结尾是回车,即\r。从 Mac OS X开始与Linux统一
给文件中续写数据和换行,代码演示:
public static void main(String[] args) throws Exception {
File file = new File("c:\\file.txt");
FileOutputStream fos = new FileOutputStream(file, true);
String str = "\r\n"+"it";
fos.write(str.getBytes());
fos.close();
}
以上就是关于字节输出流的相关知识,不得不说,字节输出流作为字节流的一种,我们单独理解起来比较麻烦,我们可以统筹一下所有的Java字节流,结合在一起来学习会事半功倍,再结合动力节点在线的面试视频课程,学习起来会轻松许多。
提枪策马乘胜追击04-21 20:01
代码小兵92504-17 16:07
代码小兵98804-25 13:57
杨晶珍05-11 14:54