一、流程:
- 打开文件输出流,流的目的地是指定的文件
- 通过流向文件写数据
- 用完流后关闭流
二、输出流写出方式1:
使用write(int b)方法,一次写出一个字节.
public static void testWrite() throws IOException{ //1、找到目标文件 File file=new File("E:\jia.txt"); //2、建立数据输出道 FileOutputStream fileOutputStream=new FileOutputStream(file); //3、开始写数据 fileOutputStream.write('h'); fileOutputStream.write('e'); fileOutputStream.write('l'); fileOutputStream.write('l'); fileOutputStream.write('o'); //4、关闭通道 fileOutputStream.close(); }
注意:
当e盘下的jia.txt不存在会怎么样?
测试:将E盘下的jia.txt文件删除,发现当文件不存在时,会自动创建一个,但是创建不了多级目录。
注意:使用write(int b)方法,虽然接收的是int类型参数,但是write 的常规协定是:向输出流写入一个字节。要写入的字节是参数 b 的八个低位。b 的 24 个高位将被忽略。
三、输出流写出方式2
使用write(byte[] b),就是使用缓冲.提高效率.
public static void testWrite2() throws IOException{ //1、找到目标文件 File file=new File("E:\jia.txt"); //2、建立数据输出道 FileOutputStream fileOutputStream=new FileOutputStream(file); //3、开始写数据 String string="Hello World"; fileOutputStream.write(string.getBytes()); //4、关闭通道 fileOutputStream.close(); }
仔细查看jia.txt文本文件发现上述程序每运行一次,老的内容就会被覆盖掉。,那么如何不覆盖已有信息,能够往jia.txt里追加信息呢。查看API文档,发现FileOutputStream类中的构造方法中有一个构造可以实现追加的功能FileOutputStream(File file, boolean append) 第二个参数,append - 如果为 true,则将字节写入文件末尾处,而不是写入文件开始处
每创建一个FileOutputStream 的时候,默认情况下FileOutputStream 的时候,默认情况下FileOutputStream
的指针是指向了文件的开始的位置。每写出一次,指向都会出现相应的移动。