IO流学习总结
来源:互联网 发布:济南程序员兼职平台 编辑:程序博客网 时间:2024/05/22 04:56
流就是字节序列的抽象概念,能被连续读取数据的数据源和能被连续写入数据的接收端就是流,IO 流根据处理类型的不同可分为字节流和字符流
二、字节流和字符流的区别:
字符流,因为文件编码的不同,就有了对字符进行高效操作的字符流对象,它的原理就是基于字节流读取字节时去查了指定的表。它和字节流的区别有两点:1.在读取数据的时候,字节流读到一个字节就返回一个字节,字符流使用了字节流读到一个或多个字节(一个中文对应的字节数是两个,在 UTF-8 码表中是 3 个字节)时,先去查指定的编码表,再将查到的字符返回;2.字节流可以处理所有类型的数据,如图片。视频等等,而字符流只能处理字符数据。所以可以根据处理的文件不同考虑使用字节流还是字符流。
三、IO 体系,所具备的基本功能就是读和写:
1.字符流
|-- Reader(读)
|-- Writer(写)
Reader
|--InputStreamReader :转换流,用于将字节流以指定的编码方式(默认gbk)转换为字符流读取
|--FileReader:用于处理文件的字符读取流对象
Writer
|--OutputStreamWriter :转换流,用于将字节流以指定的编码方式(默认gbk)转换为字符流写入
|--FileWriter:用于处理文件的字符写入流对象
其实很容易就可以看出来,IO 体系中的子类名后缀绝大部分是父类名称,而前缀则是体现子
类特有功能的名称。
用于写的流一般都有缓存区,可以调用flush直接将流刷到缓存区,一般不用自己调用,在流close的时候会自动调用一次。
public class Test {
public static void main(String[] args) throws Exception {
//commonReader()
//lenReader();
//bufferReader();
//streamReader();
copyPicture();
}
public static void copyPicture() throws Exception{
InputStream is = new FileInputStream(new File("C:\\Users\\Administrator\\Desktop\\QQ截图20160330155959.png"));
BufferedInputStream bis = new BufferedInputStream(is);
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("C:\\Users\\Administrator\\Desktop\\QQ截图副本.png"));
byte [] b = new byte[1024];
while(bis.read(b)!=-1){
bos.write(b);
bos.flush();
}
bis.close();
bos.close();
}
//读取乱码解决,读取字节流,按指定编码转换为字符流
public static void streamReader() throws Exception {
InputStreamReader isr = new InputStreamReader(new FileInputStream(new File("C:\\Users\\Administrator\\Desktop\\test.txt")),"gbk");
// char[] buf = new char[512];
// int c=0;
// while((c=isr.read(buf)) != -1){
// System.out.println(new String(buf,0,c)+"*********");
// }
FileWriter writer = new FileWriter("C:\\Users\\Administrator\\Desktop\\test1.txt",true);
BufferedWriter bw = new BufferedWriter(writer);
BufferedReader bf = new BufferedReader(isr);
String line = "";
while((line = bf.readLine()) != null){
bw.write(line);
bw.newLine();
}
//writer.flush();
//writer.close();
bw.flush();
bw.close();
isr.close();
}
public static void bufferReader() throws Exception{
BufferedReader bf = new BufferedReader(new FileReader("C:\\Users\\Administrator\\Desktop\\test.txt"));
String line = "";
while((line = bf.readLine()) != null){
System.out.println(line);
}
bf.close();
}
public static void commonReader() throws Exception{
Reader reader = new FileReader("C:\\Users\\Administrator\\Desktop\\test.txt");
int chx;
while((chx = reader.read()) != -1){
System.out.println((char)chx);
}
reader.close();
}
public static void lenReader() throws Exception{
char [] buf = new char[1024];
int len = 0;
Reader reader2 = new FileReader("C:\\Users\\Administrator\\Desktop\\test.txt");
while((len = reader2.read(buf)) != -1){
System.out.println(new String(buf, 0, len)+"*****************");
}
reader2.close();
}
}
- IO流学习总结
- IO流学习总结
- IO流学习总结
- IO流学习总结
- IO流学习总结
- IO流学习总结
- IO流学习总结
- IO流学习总结
- IO流学习总结
- IO流学习总结
- IO流学习总结
- io流学习总结
- Java IO流学习总结
- Java IO流学习总结
- 【java】IO流学习总结
- Java IO流学习总结
- Java IO流学习总结
- Java IO流学习总结
- Android Studio生成get,set,tostring,构造函数
- Reflux
- awk RS,gensub
- 修改tableview开启多选编辑模式下选中按钮的图片
- Cordova系列学习教程01. 了解Cordova
- IO流学习总结
- windows7中文界面换英文
- 大话设计模式1:初识设计模式及设计模式五大基本原则
- 批量删除SVN项目目录下的所有.svn文件
- andorid开发 sqlite 使用教程
- mysql update delete 安全模式
- 【Tesseract-OCR】在VS2010环境下调用API方法---简单快速之总结
- Oracle回收站的使用
- oozie 4.2.0编译问题