字节流写数据
█ OutputStream
█ FileOutputStream的构造方法
☞FileOutputStream
☞FileOutputStream(File file); //构造对象文件必须存在
☞FileOutputStream(String name);
█ 字节流写数据的方式
☞public void write(int b);
☞public void write(byte[] b);
☞public void write(byte[] b,int off,int len);
public class IOTest {
/*
应该使用其子类
FileOutputStream(File file)
创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
FileOutputStream(String filename)
FileOutputStream(File file, boolean append) //第一个参数String也可以
创建一个向指定 File 对象表示的文件中写入数据的文件输出流。和上面不一样,不会清空原有内容,只会在后面追加
------------------------------------------------------
void write(byte[] b)
将 b.length 个字节从指定的 byte 数组写入此输出流。
void write(byte[] b, int off, int len)
将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。
abstract void write(int b) //一次写入一个字节。把高位的三个字节去掉,只写入最后字节
// 0x ff 89 12 33 这个write只写入33
将指定的字节写入此输出流。
*/
public static void main(String[] args) {
String word = "hello world"; //内存数据写到文件系统,输出流(字符流和字节流都可以)
File file = new File("1.txt");
FileOutputStream fos = null;
try{
//fos = new FileOutputStream(file);
//fos = new FileOutputStream("1.txt");
fos = new FileOutputStream("1.txt",true); //对于写文件操作,如果文件不存在,输出流会帮你createNewFile
|
fos.write(100); //写一个数字,打开文本的时候会默认去查编码表,显示该数据对应的字符(d)。写个字符串的话打开就是字符串本身;
fos.write("\r\n".getBytes()); //往文件里写换行,"\n"是字符串,参数只能是字节,所有调用方法。
//windows的换行是"\r\n";高级记事本会识别多种换行,mac 下 "\r" linux 换行 "\n"
fos.write('a'); //写进去的是 a ;
fos.flush(); //数据写完进管道最好要用这个方法把数据放到文件里
byte[] bytes = { 97 ,98 ,99 ,100 , 101};
//fos.write(bytes); //往文件里写入a,b,c,d,e;
//fos.write(bytes, 1, 3); //往文件里写入b,c,d;
byte[] bytes2 = word.getBytes();
for(int i=0 ;i<bytes.length;i++){
System.out.println("bytes2: "+bytes2[i]); //104,101,108,108,111 ;
}
}catch(IOException e){
e.printStackTrace();
}finally{
if(fos!=null){
try {
fos.close(); //这里开头不设置初始值会出错,显示未初始化;因为try里面的初始化操作可能会出现异常,一旦异常发生没有初始化成功,这里的fos就是未初始化的了。
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
|