字节输出流写多个字节的方法与字节输出流的续写和换行
字节输出流写多个字节的方法
1. 写出字节: write(int b) 方法,每次可以写出一个字节数据,代码使用演示:
//创建FileOutpuStream对象,构造方法中绑定要写入数据的目的地 FileOutputStream flie = new FileOutputStream(new File("G:\\XQ1.01\\网站原型\\WPS Office\\11.1.0.11365\\office6\\addons\\cef\\locales\\c.txt")); //调用FileOutStream对象中的方法write,把数据写入到文件中 //在文件中显示100个字节 flie.write(49); flie.write(48); flie.write(48);
2. 写出字节数组: write(byte[] b) ,每次可以写出数组中的数据,代码使用演示:
/* public void write(byte[] b):将b.length字节从指定的字节数组写入此输出流。一次写多个字节: 如果写的第一个字节是正数(0-127),那么显示的时候会查询ASCII表 如果写的第一个字节是负数,那第一个字节会和第二个字节,两个字节组成一个中文显示,查询系统默认码表(GBK) */ byte[] bytes ={-65,-66,-67,68,69}; flie.write(bytes);
3. 写出指定长度字节数组: write(byte[] b, int off, int len) ,每次写出从off索引开始,len个字节,代码
使用演示:
/* public void write(byte[] b, int off , int len):把字节数组的一部分写入到文件中 从指定的字节数组写入len字节,从偏移量off开始输出到此输出流。 int off:数组的开始索引 int len:写几个字节 */ flie.write(bytes,1,2);
整体代码:
package DemoOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Arrays; /* 一次写多个字节的方法: public void write(byte[] b):将b.length字节从指定的字节数组写入此输出流 public void write(byte[] b,int off,int len) : 从指定的字节数组写入len字节,从偏移量off开始输出到此输出流 */ public class Demo01OutputStream { public static void main(String[] args) throws IOException { //创建FileOutpuStream对象,构造方法中绑定要写入数据的目的地 FileOutputStream flie = new FileOutputStream(new File("G:\\XQ1.01\\网站原型\\WPS Office\\11.1.0.11365\\office6\\addons\\cef\\locales\\c.txt")); //调用FileOutStream对象中的方法write,把数据写入到文件中 //在文件中显示100个字节 flie.write(49); flie.write(48); flie.write(48); /* public void write(byte[] b):将b.length字节从指定的字节数组写入此输出流。一次写多个字节: 如果写的第一个字节是正数(0-127),那么显示的时候会查询ASCII表 如果写的第一个字节是负数,那第一个字节会和第二个字节,两个字节组成一个中文显示,查询系统默认码表(GBK) */ byte[] bytes ={-65,-66,-67,68,69}; flie.write(bytes); /* public void write(byte[] b, int off , int len):把字节数组的一部分写入到文件中 从指定的字节数组写入len字节,从偏移量off开始输出到此输出流。 int off:数组的开始索引 int len:写几个字节 */ flie.write(bytes,1,2); byte[] bytes1 = "你好".getBytes(); System.out.println(Arrays.toString(bytes1)); flie.write(bytes1); flie.close(); } }
数据追加续写
经过以上的演示,每次程序运行,创建输出流对象,都会清空目标文件中的数据。如何保留目标文件中数据,还能继续添加新数据呢?
public FileOutputStream(File file, boolean append):创建文件输出流以写入由指定的 File对象表示的文件。
public FileoutputStream(String name,boolean append):创建文件输出流以指定的名称写入文件。这两个构造方法,参数中都需要传入一个boolean类型的值,true]表示追加数据,false]表示清空原有数据。这样创建的输出流对象,就可以指定是否追加续写了,代码使用演示∶
追加写/续写:使用两个参数的构造方法
FileOutputStream(String name,boolean append)创建一个向具有指定name 的文件中写入数据的输出文件流 FileOutputStream(File file,boolean append)创建一个向指定File对象表示的文件中写入数据的文件输出流 参数: String name,File file:写入数据的目的地 boolean append:追加写开关 true:创建对象不会覆盖源文件,继续在文件的末尾追加写数据 false:创建一个新文件,覆盖源文件
写换行:写换行符号
windows:\r\n linux:/n mac:/r
代码:
package DemoOutputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; /* 追加写/续写:使用两个参数的构造方法 FiLeOutputStream(String name,boolean append)创建一个向具有指定name的文件中写入数据的输出文件流。 FiLeOutputStreom(File file, booLean append)创建一个向指定FiLe对象表示的文件中写入数据的文件输出流。 参数: string name , File file:写入数据的目的地 boolean append :追加写开关 true:创建对象不会覆盖源文件,继续在文件的末尾追加写数据 false:创建一个新文件,覆盖源文件 */ public class Demo02OutputStream { public static void main(String[] args) throws IOException { FileOutputStream flie = new FileOutputStream("c.txt",true); for (int i = 0; i < 10; i++) { flie.write("你好".getBytes()); flie.write("\r\n".getBytes()); } flie.close(); } }