字节流:
InputStream 读 OutputStream 写 比如:操作图片数据
FileOutputStream fos = new FileOutputStream("fos.txt"); //创建一个字节写入流
fos.write("abcde".getBytes()); //getBytes() 字符串变成字节 参数是字节类型的。
FileInputStream fis = new FileInputStream("fos.txt"); //读取
int ch = 0;
while((ch = fis.read())!=-1)
{
System.out.println((char)ch);
}
FileInputStream fis = new FileInputStream("fos.txt"); //读取
byte[] buf = new byte[1024];
int len = 0;
while((len = fis.read(buf))!=-1){
System.out.println(new String(buf,0,len)); //字节数组以字符串形式输出
}
fis.available(); //获取文件的 字节大小 ,在定义字节数组时,可以定义一个刚刚好的数组:byte[] buf = new byte[is.available()]; 这样就不要循环了。这样一次取很多,效率不是太好。 一般定义成1024。
字节流缓冲区:
BufferedOutputStream BufferedInputStream
BufferedInputStream bufis = new BufferedInputStream(new FileInputStreram("c:\\0.mp3"));
BufferedOutputStream bufos = new BufferedOutputStream(new FileOutputStreram("c:\\1.mp3"));
int by = 0; //这个时候,不需要用字节数组了,缓冲区里自己用的是数组,这里呢就直接用read()了。疑问: 要是用了和不用有什么区别呢?
while((by=bufis.read())!=-1)
{
bufos.write(by);
}