课堂笔记--字节流及相关补充
来源:互联网 发布:b2b行业网站源码 编辑:程序博客网 时间:2024/05/16 05:26
字节流
抽象基类InputStream(字节输入流)、OutputStream(字节输出流):
字节流使用的是字节数组,字符流使用的是字符数组,但字节流可以操作任何数据。
InputStream和OutputStream都是抽象类,不能实例化,因此在实际应用中并不使用这两个类,而是使用另外的一些基本数据流类(都为InputStream和OutputStream的子类)。
字节输出流类的使用代码实例:
import java.io.*;
public class DemoFileInputOutput {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
int n=12;
byte arr[]={65,66,67,68};
//File输出流 FileOutputStream
FileOutputStream fos=new FileOutputStream("res/data.txt");
fos.write(n);
fos.write(arr);
fos.write(arr, 1,2);
fos.flush();
fos.close();
}
}
实例:编写程序copy一个图片
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) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(bis!=null){
try {
bis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(bos!=null){
try {
bos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
转换流(了解即可)
在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在一组字节流—字符流的转换流
OutputStreamWriter:是Writer的子类,将输出的字符流变为字节流,即:将一个字符流的输出对象变为字节流的输出对象。InputStreamReader:是Reader的子类,将输入的字节流变为字符流,即:将一个字节流的输入对象变为字符流的输入对象。
实例:
import java.io.*;
public class DemoConvertStream {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//把字符数据写出到磁盘文件
//输出流---转换流OutputStreamWriter---字节流对象做参数FileOutputStream
FileOutputStream fos=new FileOutputStream("res/demo.txt");
OutputStreamWriter osw=new OutputStreamWriter(fos,"UTF-8");
osw.write("hello");
osw.write("中国");
osw.flush();
osw.close();
FileInputStream fis=new FileInputStream("res/demo.txt");
InputStreamReader isw=new InputStreamReader(fis,"UTF-8");
char cbuf[]=new char[10];
int len=isw.read(cbuf);
System.out.println(new String(cbuf,0,len));
}
}
标准输入/输出流
标准输入System.in
System.in作为字节输入流类InputStream的对象,实现标准的输入,使用其read()方法从键盘接收数据。
public int read() throws IOException
public int read(byte[] i) throws IOException
标准的输出System.out
System.out是打印流类PrintStream的对象,用来实现标准输出。print()和println()方法,支持任意的基本类型作为参数。
public void print(参数)
public void println(参数)
- 课堂笔记--字节流及相关补充
- 课堂笔记--多线程相关补充
- 12.4课堂笔记及作业
- 动态申请内存及相关补充
- 课堂笔记--线程的生命周期及同步
- 听老师课堂笔记及感受总结
- j2ee学习 struts2 笔记补充property相关
- 网络字节序和主机字节序及相关函数
- 位、字节、字及相关概念
- <香港科技大学html+css+js课堂笔记>week1--Form相关
- 科锐课堂笔记:2017/2/28 循环相关
- 课堂笔记
- 课堂笔记
- 课堂笔记
- 课堂笔记
- 课堂笔记
- 课堂笔记
- 课堂笔记
- pDlg->ShowWindow(SW_SHOWNORMAL);
- Android 调用相册 拍照 实现系统控件缩放 切割图片
- C# 中关闭当前线程的四种方式
- php 简单分页类
- php study on AUG31,2011
- 课堂笔记--字节流及相关补充
- 显示opera地址栏
- pictruebox上画线,打点
- UVa Problem 10189 Minesweeper (扫雷)
- Visual Studio常用小技巧[备忘]
- jboss access log config
- 新手报到
- 逝去的八月
- 宽字节(宽字符)注入