IO基础之文件字节流和文件字符流
2017-07-28 19:05
309 查看
IO流的分类,站在不同的角度,分类方式是不一样的:
1)根据流向划分:输入流和输出流;
2)根据数据的单位划分:字节流和字符流;
3)根据功能的划分:节点流和包装流
四大基流(字节输出流OutputStream、字节输入流InputStream、字符输出流Writer、字符输入流Reader)
四大基流都是抽象类:其他流都是继承于这四大基流。
我们不能创建四大基流的对象,只能创建其子类对象。
无论什么流,都有close()方法,用来关闭资源。
根据数据的单位划分:(以下是字节流的体系)
以下是字符流体系:
操作IO流的模板:
1)创建源或者目标对象:
拿文件流举例:
输入操作:把文件中的数据流向到程序中,此时文件就是源,程序就是目标;
输出操作:把程序中的数据流向到文件中,此时文件就是目标,程序就是源。
2)创建IO流对象:
输入操作:创建输入流对象
输出操作:创建输出流对象
3)具体的IO操作:
输入操作:输入流对象的read()方法
输出操作:输出流对象的write()方法
4)关闭资源:
输入操作:输入流对象.close()
输出操作:输出流对象.close()
操作IO流的六字箴言:读进来,写出去
读进来:进来强调的是输入,读说明是read方法
写出去:出去强调的是输出,写说明是write方法
文件流:顾名思义,程序和文件打交道,此时我们谈及的文件,指的是纯文本文件(txt的,不要使用woed或者excel)
FileInputStream:文件的字节输入流
FileOutputStream:文件的字节输出流
FileReader:文件的字符输入流
FileWriter:文件的字符输出流
字节流和字符流的选择:
一般的,操作二进制文件(图片、音频、视频等)必须使用字节流;
一般的,操作文本文件使用字符流;
如果不清楚哪一类文件,就使用字节流。
文件字节流:(test1()是之前的正常规范方法,test2()是Java7之后所提供的的方法)
FileInputStream:文件的字节输入流
FileOutputStream:文件的字节输出流
文件字符流:
FileReader:文件的字符输入流
FileWriter:文件的字符输出流
//文件的字符流
public class CopyFile {
public static void main(String[] args) throws Exception {
// 1创建源和目标对象
File srcFile = new File("file/ch.txt");
File destFile = new File("file/ch_copy.txt");
// 2创建输入流和输出流对象
Reader in = new FileReader(srcFile);
Writer out = new FileWriter(destFile);
// 3读和写的操作
char[] buffer = new char[100];
int len = -1;
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
// 4关闭流
in.close();
out.close();
}
}
1)根据流向划分:输入流和输出流;
2)根据数据的单位划分:字节流和字符流;
3)根据功能的划分:节点流和包装流
四大基流(字节输出流OutputStream、字节输入流InputStream、字符输出流Writer、字符输入流Reader)
四大基流都是抽象类:其他流都是继承于这四大基流。
我们不能创建四大基流的对象,只能创建其子类对象。
无论什么流,都有close()方法,用来关闭资源。
根据数据的单位划分:(以下是字节流的体系)
以下是字符流体系:
操作IO流的模板:
1)创建源或者目标对象:
拿文件流举例:
输入操作:把文件中的数据流向到程序中,此时文件就是源,程序就是目标;
输出操作:把程序中的数据流向到文件中,此时文件就是目标,程序就是源。
2)创建IO流对象:
输入操作:创建输入流对象
输出操作:创建输出流对象
3)具体的IO操作:
输入操作:输入流对象的read()方法
输出操作:输出流对象的write()方法
4)关闭资源:
输入操作:输入流对象.close()
输出操作:输出流对象.close()
操作IO流的六字箴言:读进来,写出去
读进来:进来强调的是输入,读说明是read方法
写出去:出去强调的是输出,写说明是write方法
文件流:顾名思义,程序和文件打交道,此时我们谈及的文件,指的是纯文本文件(txt的,不要使用woed或者excel)
FileInputStream:文件的字节输入流
FileOutputStream:文件的字节输出流
FileReader:文件的字符输入流
FileWriter:文件的字符输出流
字节流和字符流的选择:
一般的,操作二进制文件(图片、音频、视频等)必须使用字节流;
一般的,操作文本文件使用字符流;
如果不清楚哪一类文件,就使用字节流。
文件字节流:(test1()是之前的正常规范方法,test2()是Java7之后所提供的的方法)
FileInputStream:文件的字节输入流
FileOutputStream:文件的字节输出流
public class FileDemo2 { public static void main(String[] args) { // test1(); test2(); } /* * 在Java7之后,提供的自动资源关闭 */ private static void test2() { // 1、创建源和目标 File srcFile = new File("file/ch.txt"); File destFile = new File("file/ch_copy.txt"); try( //打开资源的代码 // 2、创建输入流和输出流对象 InputStream in = new FileInputStream(srcFile); OutputStream out = new FileOutputStream(destFile); ) { //可能出现异常的代码 // 3、读和写的操作 byte[] buffer = new byte[1024]; int len = -1; while ((len = in.read(buffer)) != -1) { //打印一下读取的数据 out.write(buffer, 0, len); } }catch (Exception e) { e.printStackTrace(); } } private static void test1() { //声明资源对象 InputStream in = null; OutputStream out = null; try { // 1、创建源和目标 File srcFile = new File("file/ch.txt"); File destFile = new File("file/ch_copy.txt"); // 2、创建输入流和输出流对象 in = new FileInputStream(srcFile); out = new FileOutputStream(destFile); // 3、读和写的操作 byte[] buffer = new byte[1024];//一次性可读1024个字节 int len = -1;//表示已经读取的字节数,在底层规定是-1读取到末尾 while ((len = in.read(buffer)) != -1) { //打印一下读取的数据 out.write(buffer, 0, len); } } catch (IOException e) { //处理异常 e.printStackTrace(); }finally{ // 4、关闭流(为了出现不必要的异常,各关各的) try { if(in!=null){ in.close(); } } catch (IOException e) { e.printStackTrace(); } try { if(out!=null){ out.close(); } } catch (IOException e) { e.printStackTrace(); } } } }
文件字符流:
FileReader:文件的字符输入流
FileWriter:文件的字符输出流
//文件的字符流
public class CopyFile {
public static void main(String[] args) throws Exception {
// 1创建源和目标对象
File srcFile = new File("file/ch.txt");
File destFile = new File("file/ch_copy.txt");
// 2创建输入流和输出流对象
Reader in = new FileReader(srcFile);
Writer out = new FileWriter(destFile);
// 3读和写的操作
char[] buffer = new char[100];
int len = -1;
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
// 4关闭流
in.close();
out.close();
}
}
相关文章推荐
- Java基础——IO(拷贝文件+字节流-字符流缓冲区(装饰设计)-转换流-IO操作规律-异常日志-系统信息列表输出)
- 【java基础】采用字节流的文件IO演示,字节流与字符流转换,转换流的编码解码
- 黑马程序员---java基础之IO(字符流和字节流)
- 文件IO操作——流文件(字节流、字符流)小结
- Java读写Properties文件及JavaIO中字节流和字符的转换
- 黑马程序员——Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律
- 黑马程序员_字符流_字节流_IO异常处理_文件的续写_拷贝文本_缓冲流
- JAVA基础再回首(二十二)——转换流概述及用法、简化写法FileWriter和 FileReader、字符缓冲流及特殊用法、字节流字符流复制文件方法总结
- Java读写Properties文件及JavaIO中字节流和字符的转换
- java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝
- 黑马程序员——Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律
- 黑马程序员--Java基础学习之IO流之字节流、字符流、读取写入文件、Copy文件、键盘输入输出、流操作的基本规律
- Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律
- JAVA之IO 基础(字节流和字符流)
- IOの利用字节流和字符流完成文件的复制demo
- java基础之IO转换流--OutputStreamWriter(字符流通往字节流,可以指定字符编码的IO流对象)
- 黑马程序员——Java基础知识——IO(字符流、字节流、转换流、File)
- 字符流_字节流_IO异常处理_文件的续写_拷贝文本_缓冲流
- 使用字节流、字符流读写文件基础
- java 基础之 IO(字节流和字符流)