281 字节流写数据的3种方式
方法 | 说明 | |
1 | void write(int b) | 将指定的字节写入此文件输出流,每次写1个字节数据 |
2 | void write(byte[] b) | 将b.length字节从指定的字节数组写入此文件输出流,每次写1个字节数组数据 |
3 | void write(byte[] b,int off,int len) | 将len长度的字节从指定的字节数组开始,从偏移量off开始写入此文件输出流,每次写1个字节数组的部分数据 |
b,字节 off,偏移量 len,长度 | 1个字节, 偏移量,索引的位置 |
·
【FileOutputStream的构造方法】
方法 | 说明 | |
1 | FileOutputStream(String name) | 创建文件输出流,并以指定名称写入文件 |
2 | FileOutputStream(File file) | 创建文件输出流,并写入file对象指定的文件 |
1 package e281;
7 import java.io.File;
8 import java.io.FileNotFoundException;
9 import java.io.FileOutputStream;
10 import java.io.IOException;
11 import java.nio.charset.StandardCharsets;
13 public class FileOutputStreamDemo {
14 public static void main(String[] args) throws IOException {
15 FileOutputStream fos1 = new FileOutputStream("myIOStream\\e281-1.txt");
26 File file=new File("myIOStream\\e281-2.txt");
27 FileOutputStream fos2=new FileOutputStream(file);
31 FileOutputStream fos3=new FileOutputStream(new File("myIOStream\\e281-3.txt"));
32 FileOutputStream fos4=new FileOutputStream(new File("myIOStream\\e281-4.txt"));
33
34 fos1.write(97);//throws IOException
35 fos1.write(98);
36 fos1.write(99);
37 // 这是方式1,写到这里,运行一次,报错,手动添加指定的文件,再运行,通过
38 // e281.txt里面写了abc
39
40 byte[] byteA1={97,98,99,100,101};
41 fos1.write(byteA1);//运行后e281.txt里面新增了abcde
42 // 这是方式,2
43
44 byte[] byteA2="two".getBytes();
45 fos2.write(byteA2);
46 // 这是方式3,将b.length字节从指定的字节数组写入此文件输出流的第2种方式
47 // 根据字符串得到字节数组
48
49 byte[] byteA3="three".getBytes();
50 fos3.write(byteA3,0,byteA3.length);//e281-3.txt新增了“three”
51 fos4.write(byteA3,1,3);
52 // 预期效果:e281-4.txt新增第1-(1+3-1)位的“three”,即hre
53 // 实际运行结果:e281-4.txt新增了“hre”
54
55 fos1.close();
56 fos2.close();
57 fos3.close();
58 fos4.close();
59 // 释放资源
60 }
61 }
--------------------------------------------------------------
2 /*
3 查看FileOutputStream的两个构造方法
4 1 FileOutputStream(String name) 创建文件输出流,并以指定名称写入文件
5 2 FileOutputStream(File file) 创建文件输出流,并写入file对象指定的文件
6 */
17 // 选中FileOutputStream按ctrl b查看源代码
18 // public FileOutputStream(String name) throws FileNotFoundException {
19 // this(name != null ? new File(name) : null, false);
20 // }
21 // 由上可知,如果参数不是null,则FileOutputStream会创建一个File
22 // 已知"C:\\black"不是null,则系统会创建一个File,底层动作相当于
23 // 创建fos对象的同时,系统把指定的路径封装成了File对象
24 // FileOutputStream fos = new FileOutputStream(new File("C:\\black"));
28 // 这里看下另一个构造方法FileOutputStream(File file)
29 // 这个构造方法的参数要一个File对象,因此先创建一个File对象,再创建这个构造方法
30 // 上面的1句其实可以缩写为1句,如下