输入输出流(IO)
2016-11-18 11:17
351 查看
输入输出流(IO)
字节流
InputStream,所有输入字节流的基类,抽象类FileInputStream,读取文件的输入字节流
BUfferedInputStream,缓冲输入字节流,该类内部维护了一个 8kb 的字节数组,该类的出现是为了提高读取数据的效率
OutputStream,所有输出字节流的基类,抽象类
FileOutputStream,向文件输出字节数据
BufferedOutputStream,缓冲输出字节流,该类内部维护了一个 8kb 的字节数组,该类的出现是为了提高写数据的效率
什么情况使用字节流:读取到数据不需要经过编码或者解码的情况下使用字节流,比如:图片数据
字符流
字符流 = 字节流 + 编码(解码)Reader,所有输入字符流的基类,抽象类
FileReader,读取文件字符的输入字符流
BufferedReader,缓冲输入字符流,它内部维护了一个8192个长度的字符数组,该类出现的目的是为了提高读取文件字符的效率并且拓展了功能(BufferedReader.readLine())
Writer,所有输出字符流的基类,抽象类
FileWriter,向文件输出字符数据的输出字符流
BufferedWriter,缓冲输出字符流,它内部维护了一个8192个长度的字符数组,该类出现的目的是为了提高写文件字符的效率并且拓展了功能(BufferedWriter.newLine())
什么情况下使用字符流:如果读写需要编码和解码的数据(字符数据),这时候我们就使用字符流
转换流
InputSrteamReader,输入字节流 -> 输入字符流OutputStreamWriter,输出字节流 -> 输出字符流
/** 字节流转字符流 */ public static void testOutput() throws Exception{ Socket socket = new Socket(InetAddress.getLocalHost(),9090); //获取到socket的输出字节流 OutputStream outputStream = socket.getOutputStream(); //把输出字节流转换成输出字符流 OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream); outputStreamWriter.write("不饿!"); }
转换流的作用:
可以把对应的字节流转换成字符流使用。
/** 将输入控制台的一行字符数据显示出来 */ public static void testInput() throws Exception{ InputStream in = System.in; //int content = in.read();//read()方法每次只会读取到一个字节的数据 //创建转换流,把输入字节流转成输入字符流 InputStreamReader inputStreamReader = new InputStreamReader(in); //创建缓冲输入字符流,使用readLine()方法进行整行数据的读取 BufferedReader bufferedReader = new BufferedReader(inputStreamReader); System.out.println(bufferedReader.readLine()); }
可以指定码表进行读写文件的数据。因为FileReader和FileWriter这两个类默认是使用的是gbk编码,不能指定读写文件数据的编码。
/** 指定utf-8码表把数据写出到文件上 */ public static void writeFile() throws IOException{ FileOutputStream fileOutputStream = new FileOutputStream("F:\\a.txt"); //创建转换流,将输出字节流转成输出字符流,并制定utf-8码表进行编码 OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream,"utf-8"); outputStreamWriter.write("大家好");//中文在utf-8码表中占三个字节 outputStreamWriter.close(); } /** 指定utf-8码表进行读取文件上的数据 */ public static void readFile() throws IOException{ FileInputStream fileInputStream = new FileInputStream("F:\\a.txt"); //创建转换流,将输入字节流转成输入字符流,并制定utf-8码表进行解码 InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream,"utf-8"); int content = 0; while((content = inputStreamReader.read())!=-1){ System.out.println((char)content); } inputStreamReader.close(); }
相关文章推荐
- JavaIO 总结笔记<三> 基本字节字符输入输出流和文件复制
- 10.31 流 IO 输入输出流
- 唠唠SE的IO-02——字节输入输出流
- Java IO 输入输出流的理解 1
- java io包中 File的输入输出流(读,写操作)
- J2SE第八章——IO输入输出流(基本知识与IO流实现文件复制)
- 【转】输入/输出流 - 全面掌握IO
- day19 IO-2 包装流 标准输入输出流 打印流 Properties 对象流和序列化
- IO操作 改变标准输入输出流和转换流练习
- Java IO 输入输出流 详解 (一)***
- Java IO 输入输出流 实例解释
- Java IO(输入输出流)
- Java 输入输出流教程(三)——【管道】(原作:Java IO Tutorial by Jakob Jenkov)
- java IO输入输出流笔记
- Java输入输出流IO
- JAVA 输入输出流 IO 总结
- 1、IO输入&输出流 简介
- Java IO详解(三)------字节输入输出流
- IO输入输出流
- J2SE第八章——IO输入输出流(总结)