io流的分类\n"
" 如果从类型上分,可以分成字节流和字符流\n"
" \n"
" 字节流\n"
" 字节输出流: outputstream\n"
" 字节输入流: inputstream\n"
" 字符流\n"
" 字符输出流: writer\n"
" 字符输入流: reader");
/*在java中outputstream表示字节输出流,可以将java程序中的数据写到文件中。
outputstream是所有字节输出流的顶层父类,是一个抽象类,如果要用,需要使用子类。
常用的子类fileoutputstream
构造方法:
fileoutputstream(file file): 传递file类型的文件。
fileoutputstream(string name): 传递一个字符串类型的文件路径。
常用方法:
void write(int b): 向文件中写入一个字节。
void write(byte[] b): 向文件中写入一个字节数组。
void write(byte[] b, int off, int len): 向文件中写入字节输入的一部分。
void close(): 释放资源.
fileoutputstream的使用步骤
1. 创建一个fileoutputstream对象,并且指定一个目的地文件
2. 调用write方法,向文件中写入数据。
3. 释放资源(关闭流)
注意: 在java中,一个字符占两个字节,但是如果这个字符在ascii码范围内
,那么这个字符在计算机
中是占一个字节的,可以以一次写一个字节的方式写入到文件中.
中文在操作系统中占多个字节的。 如果文件采用的是gbk编码,那么这个中文就占2个字节。
如果文件采用的是utf-8编码,那么这个中文占3个字节。
*/
public class demo02outputstream {
public static void main(string[] args) throws ioexception {
byte arr[] = new byte[]{12, 13, 13, 45};
//创建一个fileoutputstream对象,并且指定一个目的文件
fileoutputstream fs = new fileoutputstream("file01.text");
//调用write方法,向文件中写入数据
//写入byte【】类型
fs.write(arr);
//写入byte【】类型,从几号开始到几号索引结束
fs.write(arr, 1, arr.length - 1);
// system.out.println(fs);
//如果不释放资源,那么如果这个程序不结束的话,这个资源会一直处于被占用的状态.
//3. 释放资源(关闭流)
fs.close();
}
}
/*
字符串和字节输出的相互转换。
字符串->字节数组
byte[] getbytes(): 使用平台默认的编码方式将字符串转成字节数组。
字节数组 -> 字符串
string(byte[] bytes): 将字节数组转成一个字符串
string(byte[] bytes, int offset, int length): 将字节数组的一部分转成string。
参数bytes: 表示要转换的字节数组
参数offset: 表示从哪个位置开始转
参数length: 表示转几个.
*/
public class demo03parse {
public static void main(string[] args) {
//定义一个字符串
string s="abcde";
//调用方法把这个字符串转换为字节数组
byte[] arr=s.getbytes();
system.out.println(arrays.tostring(arr));
string s1="中文";
byte[]arr1=s1.getbytes();
system.out.println(arrays.tostring(arr1));//从打印结果可以看到文字占了三个字节
system.out.println("---------------------");
//字节数组转换为字符串
string str1=new string(arr);
system.out.println("str1:" str1);
string str2=new string(arr,1,arr.length-2);
system.out.println(str2);
}
}
/*
使用字节输出流向文件中一次写一个字节数组
方法:
void write(byte[] b): 向文件中写入一个字节数组。
void write(byte[] b, int off, int len): 向文件中写入字节输入的一部分。
*/
public class demo04outputstream {
public static void main(string[] args) throws ioexception {
//创建fileoutputstream对象,并指定目标文件
fileoutputstream fs=new fileoutputstream("fiel01.ext");
//使用字节输出流向文件写一个字节数组
//创建一个字符串,转字节数组
string s="abcde";
byte[] b = s.getbytes();
//把字节数组输出到指定文件
// fs.write(b);
//向文件中写入字节输出的一部分
fs.write(b,0,b.length-1);
//关闭流
fs.close();
}
/*
如果想要在原来文件的后面进行续写,可以使用另外的构造方法创建对象。
fileoutputstream(file file, boolean append): 第二个参数append表示是否要续写。
true表示续写。
fileoutputstream(string name, boolean append): 第二个参数append表示是否要续写。
true表示续写。
*/
public class demo05outputstream {
public static void main(string[] args) throws ioexception {
fileoutputstream fs = new fileoutputstream("fiel02.text", true);
//字符串转字节数组
fs.write("疑是地上霜".getbytes());
//释放资源
fs.close();
}
}
/*
换行写
如果要实现换行,可以使用换行符。
每个操作系统的换行符都不一样。
windows: \r\n
linux: \n
mac: \r
*/
public class demo06writeline {
public static void main(string[] args) throws ioexception {
fileoutputstream fs = new fileoutputstream("fiel03", true);
fs.write("窗前明月光\r\n".getbytes());
fs.write("窗前明月光\r\n".getbytes());
fs.write("\r\n\r\n窗前明月光".getbytes());
fs.close();
}
}