12.3字节流
一.InputStream 和 OutputStream(抽象类)
. InputStream常用方法;
Read():从流中读去数据;
Skip():跳过流中的若干字节
Available():返回流中可用字节数;
二.FileInputStream和FileOutputStream的使用
FileOutputStream fos = new FileOutputStream("a.txt");
FileInputStream fis = new FileInputStream("a.txt");
如:import java.io.*;
public class CopyImageDemo {
public static void main(String[] args){
//复制---从源文件中读取数据,写入到目标文件
//输入流----FileInputSream BufferedInputStream 输出流--FileOutputStream BufferedOutputStream
FileInputStream fis=null;
FileOutputStream fos=null;
BufferedInputStream bis=null;
BufferedOutputStream bos=null;
try {fis=new FileInputStream("res/0.gif");//字节输入流
bis=new BufferedInputStream(fis);
fos=new FileOutputStream("res/1.gif");//字节输出流
bos=new BufferedOutputStream(fos);
int n=0;
while((n=bis.read())!=-1){
bos.write(n);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(bis!=null){
try {bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(bos!=null){
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} }
}
三.(1) 键盘输入为文件源读取并输出
public class DemoKeyInput {
public static void main(String[] args) throws IOException{
BufferedInputStream bis=new BufferedInputStream(System.in);//接收键盘输入
byte arr[]=new byte[10];
int len=bis.read(arr);//读键盘输入的字节
System.out.println(new String(arr,0,len));
}
}
(2)键盘输入的是字节流。
四.字节流与字符流的转换:
package com.hbsi.io;
import java.io.*;
public class DemoConvertStream {
public static void main(String[] args) throws IOException {
//把字符数据写出到磁盘文件
//输出流---转换流OutputStreamWriter---字节流对象做参数FileOutputStream
FileOutputStream fos=new FileOutputStream("res/demo.txt");// 数据宿 OutputStreamWriter osw=new OutputStreamWriter(fos,);//字符流-à字节流
osw.write("hello");
osw.write("中国");
osw.flush();
osw.close();
FileInputStream fis=new FileInputStream("res/demo.txt");
InputStreamReader isw=new InputStreamReader(fis);//字节流-à字符流
char cbuf[]=new char[10];
int len=isw.read(cbuf);
System.out.println(new String(cbuf,0,len));
}
}