12.3节 字节流
字节流可以处理各种对象
抽象基类:InputStream和OutputStream
读取单个字符返回int类型:防止返回-1而终止
字节流输出:
int n=12;
byte arr[]={65,66,67,68};
//File输出流 FileOutputStrea FileOutputStream fos=new FileOutputStream("res/data.txt");
fos.write(n);
fos.write(arr);
fos.write(arr,1,2);
fos.flush();
fos.close();
字节流输入:
FileInputStream fis=new FileInputStream("res/data.txt");
int m=fis.read();//一次读一个
byte[] arr1=new byte[10];
int len=fis.read(arr1);//实际读取的个数
System.out.println(m);
for(int i=0;i<len;i++){
System.out.println(arr1[i]);
}fis.close();
上面没有判定是否读到文件末尾
Int n=0;
While(n=fis.read())!=-1{
}
文件中还有多少个字节可读
fis.available();
System.out.println(fis.available());
还有多少可读就让数组多大
Byte[] arr=new Buty[fis.available()];
Fis.read(arr);
System.out.println(new String(arr));
复制---从源文件中读取数据写到目标文件中
输入流—-FileInputStream 输出流—FileOutputStream BufferedInputStream
FileInputStream fis=null;
FileOutputStream fos=null;
BufferedInputStream bis=null;
BufferedOutputStream bos=null;
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);
从键盘输入
Int n=System.in.read();
System.out.println(n);
Byte arr[]=new Byte[10];
Int len=System.in.read(arr);//实际返回的字符串
System.out.println(new String(arr,0,len));
把字符数据写到磁盘文件中
输出流-----转换流OutputStreamWriterr-----字节流对象做参数---FileOutputStream
FileOutputStream fos=new FileOutputStream(“res/demo.txt”);
OutputStreamWriter osw=new OutputStreamWriter(fos,”UTF-8”);//UTF-8是指定的编码方式【FileWriter fw=new FileWriter(“demo.txt”);】
Osw.write(“hello”);
Osw.write(“中国”);
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(cubf,0,len));
如果使用指定编码表,必须使用转换流。
将键盘录入的数据存储到一个文件中
(1)数据源 System.in
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
(2) 数据宿 文件输出 Writer FileWriter
FileWriter fw=new FileWriter(“demo.txt”);
BufferedWriter bw=new BufferedWriter(fw);
int c;
ch=br.read();
bw.writer(ch);
br.close();
bw.close();