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