BufferedOutputStream:字节缓冲输出流
BufferedInputStream:字节缓冲输入流
BufferedOutputStream(OutputStream out)
该构造方法提供了一个默认的缓冲区代销,一般使用默认的缓冲区就可以了。
字节换缓冲区流仅仅提供缓冲区,而真正的底层的读写数据还是需要基本的流对象进行操作
实现代码:
BufferedOnputStream bos = new BufferedOnputStream(new FileOutputStream("a.txt"));
bos.write("hello.getBytes());
bos.close(); //写入
BufferedInputStream bos = new BufferedInputStream(new FileOutputStream("a.txt"));
int by ;
while((by=bis.read())!=-1){
System.out.print((char)by); //读取
}
转换流=字节流+编码表
常用码表:
ASCII
GB2312
GBK
UTF8
乱码:针对同一个数据编码和解码的编码表不一
例如:String s = “你好”;
编码:
byte[ ] bys = s.getBytes("UTF-8"); //指定编码UTF8
System.out.println(Arrays.toString(bys));
解码:
String ss = new String(bys,“UTF-8”);
System.out.println(ss);
OutputStreamWriter字符输出流
public OutputStreamWriter(OutputStreamout).根据默认编码把字节流转换成字符流
public OutputStreamWriter(OutputStreamout,String charsetName).根据指定编码转换成字节流
例如:
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("a.txt") , "GBK")
osw.write("您好"):
osw.close();
InputStreamWriter字符输入流
public InputStreamWriter(InputStreamout).根据默认编码把用默认编码读数据
public InputStreamWriter(InputStreamout,String charsetName).用指定编码读数据
InputStreamWriter isw = new InputStreamWriter(new FileInputStream("a.txt") , "GBK")
int ch ;
while( (ch = isw.read() ) != -1{
System.out.print(char)ch);
isw.close();
public void write(int c):
写一个字符
osw.write('a');
一字符=两字节,需要刷新
oswflush();或osw.close();
public void write (char[ ] cbuf)
char [ ] chs = {
'a','b','c','d'};
public void write(chs):
写一个字符数组
osw.write(chs);
public void write (char[ ] cbuf, int off, int len)
osw.write(chs,0,3);写一个字符数组的一部分
public void write (String str)
public void write(“hello”):
写一个字符串
public void write (String str,int off, int len)
osw.write(“hello”,0,3);写一个字符数组的一部分
isDirectory(判读是否为目录
isFile():判断是否为文件
exists( ):判断是否存在
getAbsoulte(): 获取绝对路径
getPath():获取相对路径
getName():获取文件名
流向:
输入流
输出流
数据类型:
字符流
字节流
字节流写数据的步骤:
A.创建字节流输出对象(FileOutputStream(String name)方法)
B.调用写数据的方法(write()方法)
C.释放资源(close()方法)
三种方式:
public void write(int b):一次写一个字节
public void write(byte[ ] b):一次写一个字节数组
public void write(byte[ ] b,int offf, int len) :一次写一个数组的一部分
创建字节流输出对象:
FileOutputStream of = new FileOutputStream("b.txt"));
String类中有一个方法getBytes( )将字符串变成数组:
fos.write(65);
fos.write("ABCDE".getByetes());
fos.write("ABCDE".getByetes(),0,3);
fos.close();
释放资源
读取:
创建对象:
InputStreamReader isr = new InputStreamReader(new FileputStream("a.txt"));
int ch;
一次读取一个字符
while((ch=isr.read()!=-1){
System.out.print((char))ch);
}
isr.close();
char[ ] chs =new char [1024];
int len;
while((len=isr.read (chs))!=-1){
System.out.print(new String(chs,0,len));
}
isr.close();