IO基础之转换流、内存流和合并流
2017-07-28 19:15
183 查看
转换流:把字节流转换成字符流
InputStreamReader:把字节输入流转成字符输入流。
OutputStreamWriter:把字节输出流转成字符输出流。
为什么有字节流转字符流,没有字符流转字节流:
字节流可以操作一切文件(纯文本文件/二进制文件)
字符流用来操作中文纯文本文件使用的,本身是对字节流的增强。
下面实现一下转换:
内存流(数组流):
把数据先临时存在数组中,待会再从数组中获取出来:
1、字节内存流:ByteArrayOutputStream/ByteArrayInputStream
2、字符内存流:CharArrayWriter/CharArrayReader
3、字符串流:StringWriter/StringReader
字节内存流:
字符内存流:
字符串流:
合并流:
主要的功能是将两个文件的内容合并成一个文件;
下面将两个文件合并在一起:
InputStreamReader:把字节输入流转成字符输入流。
OutputStreamWriter:把字节输出流转成字符输出流。
为什么有字节流转字符流,没有字符流转字节流:
字节流可以操作一切文件(纯文本文件/二进制文件)
字符流用来操作中文纯文本文件使用的,本身是对字节流的增强。
下面实现一下转换:
/** * Created by Layne_Yao on 2017-7-28 下午2:59:07. * CSDN:http://blog.csdn.net/Jsagacity */ public class StreamTransformReaderDemo { public static void main(String[] args) throws Exception, FileNotFoundException { File srcFile = new File("file/stream.txt"); File destFile = new File("target/stream.txt"); //把字节流转换成字符流 Reader in = new InputStreamReader(new FileInputStream(srcFile),"GBK"); Writer out = new OutputStreamWriter(new FileOutputStream(destFile),"GBK"); //接下来操作字符流 char[] buffer = new char[1024]; int len = -1; while((len = in.read(buffer))!=-1){ out.write(buffer,0,len); } in.close(); out.close(); } }
内存流(数组流):
把数据先临时存在数组中,待会再从数组中获取出来:
1、字节内存流:ByteArrayOutputStream/ByteArrayInputStream
2、字符内存流:CharArrayWriter/CharArrayReader
3、字符串流:StringWriter/StringReader
字节内存流:
/** * Created by Layne_Yao on 2017-7-28 下午3:22:45. * CSDN:http://blog.csdn.net/Jsagacity */ //字节的数组流/内存流 public class ByteArrayDemo { public static void main(String[] args) throws Exception { //字节数组输出流:程序->内存 ByteArrayOutputStream bos = new ByteArrayOutputStream(); bos.write("ABCDE".getBytes()); //要使用存储的临时数据 byte[] buffer = bos.toByteArray(); //字节数组输入流:内存-->程序 ByteArrayInputStream bis = new ByteArrayInputStream(buffer); byte[] bys = new byte[5]; int len = -1; while ((len = bis.read(bys)) != -1) { System.out.println(new String(bys, 0, len)); } //其实无需关闭流 bis.close(); bos.close(); } }
字符内存流:
/** * Created by Layne_Yao on 2017-7-28 下午3:35:21. * CSDN:http://blog.csdn.net/Jsagacity */ // 字符内存流/数组流 public class CharArrayDemo { public static void main(String[] args) throws Exception { // 字符数组输出流 CharArrayWriter writer = new CharArrayWriter(); writer.write("这是字符内存流!!!"); char[] data = writer.toCharArray(); // 字符数组输入流 CharArrayReader reader = new CharArrayReader(data); char[] bys = new char[10]; int len = -1; while ((len = reader.read(bys)) != -1) { System.out.println(new String(bys, 0, len)); } //其实无需关闭流 writer.close(); reader.close(); } }
字符串流:
/** * Created by Layne_Yao on 2017-7-28 下午3:50:24. * CSDN:http://blog.csdn.net/Jsagacity */ //字符串流(字符串的内存流) public class StringWriterReaderDemo { public static void main(String[] args) throws Exception { //字符串的输出流 StringWriter sWriter = new StringWriter(); sWriter.write("字符串流(字符串的内存流)"); //字符串的输入流 StringReader sReader = new StringReader(sWriter.toString()); char[] buffer = new char[1024]; int len = -1; while((len = sReader.read(buffer))!=-1){ System.out.println(new String(buffer,0,len)); } //其实无需关闭流 sWriter.close(); sReader.close(); } }
合并流:
主要的功能是将两个文件的内容合并成一个文件;
下面将两个文件合并在一起:
/** * Created by Layne_Yao on 2017-7-28 下午3:40:21. * CSDN:http://blog.csdn.net/Jsagacity */ //合并流 public class SequenceDemo { public static void main(String args[]) throws Exception { //两个文件的输入流 InputStream is1 = new FileInputStream("file/a.txt"); InputStream is2 = new FileInputStream("file/b.txt"); //文件的输出流 OutputStream os = new FileOutputStream("target/ab.txt"); //将两个输入流合并 SequenceInputStream sis = new SequenceInputStream(is1, is2); int len = -1; while ((len = sis.read()) != -1) { os.write(len); } sis.close(); is1.close(); is2.close(); os.close(); } }
相关文章推荐
- Java基础——IO(拷贝文件+字节流-字符流缓冲区(装饰设计)-转换流-IO操作规律-异常日志-系统信息列表输出)
- Java SE 基础复习-IO与序列化(2)-内存
- Java基础--IO-文件的切割和合并
- (代码篇)从基础文件IO说起虚拟内存,内存文件映射,零拷贝
- Java基础-IO学习之内存操作流,打印流 ...(上)
- 黑马程序员——JAVA基础——IO(一)---流概述,节点流、处理流、转换流与标准输入输出流、打印流、File文件对象、合并流
- 【java基础:IO】文件合并(mergefiles)Demostration
- (理论篇)从基础文件IO说起虚拟内存,内存文件映射,零拷贝
- Java基础-IO学习之内存操作流,打印流 ...(下)
- Java基础-22总结登录注册IO版,数据操作流,内存操作流,打印流,标准输入输出流,转换流,随机访问流,合并流,序列化流,Properties
- JAVA基础 day22 File类的方法和应用 利用递归获取目录下的所有文件 Properties类的应用(和IO技术结合,存取配置文件) 打印流和合并流等功能类的学习应用 切割文件练习
- io基础(字节流、字符流、转换流、缓冲字符流)
- Java基础-22总结登录注册IO版,数据操作流,内存操作流,打印流,标准输入输出流,转换流,随机访问流,合并流,序列化流,Properties
- 【java基础:IO】带配置文件的文件切割与合并Demostration
- 黑马程序员——Java基础知识——IO(字符流、字节流、转换流、File)
- Python StringIO模块实现在内存缓冲区中读写数据
- java基础--IO
- 务实java基础之IO
- JAVA_SE基础——24.面向对象的内存分析
- Java基础---IO(二)