Java学习提要——IO操作的内存流
2016-10-13 08:51
483 查看
有一个应用需要进行IO操作,可是又不想产生文件。我们就可以使用内存来进行输入与输出的操作——使用内存流的场景
java.io包里提供两组操作:
字节内存流:ByteArrayInputStream、ByteAttayOutputStream
字符内存流:CharArrayReader、CharArrayWriter
本文主要以字节内存流操作为例子,两个操作其实没什么区别
做一个简单的比较:
文件操作为例:
输出(OutputStream):程序 -> OutputStream -> 文件
输入(InputStream):程序 <- InputStream <- 文件
内存操作为例:
输出(InputStream):程序 -> InputStream -> 内存
输入(OutputStream):程序 <- OutputStream <- 内存
例:小写字母转大写字母
!避免不必要的字符被转换,使用Character
-public static char toLowerCase(char ch)
-public static int toLowerCase(int codePoint)
-public static char toUpperCase(char ch)
-public static int toUpperCase(int codePoint)
注意!在ByteArrayOutputStream类里面有一个重要的方法:public byte[] toByteArray()
这个方法可以将所有保存在内存中的字节数据变为字节数组存在
java.io包里提供两组操作:
字节内存流:ByteArrayInputStream、ByteAttayOutputStream
字符内存流:CharArrayReader、CharArrayWriter
本文主要以字节内存流操作为例子,两个操作其实没什么区别
名称 | ByteArrayInputStream | ByteArrayOutputStream |
---|---|---|
继承结构 | java.lang.Object -java.io.InputStream –java.io.ByteArrayInputStream | java.lang.Object -java.io.OutputStream –java.io.ByteArrayOutputStream |
构造方法 | public ByteArrayInputStream(byte[] buf) 表示将要操作的数据设置到输入流 | public ByteArrayOutputStream() 从内存输出数据 |
文件操作为例:
输出(OutputStream):程序 -> OutputStream -> 文件
输入(InputStream):程序 <- InputStream <- 文件
内存操作为例:
输出(InputStream):程序 -> InputStream -> 内存
输入(OutputStream):程序 <- OutputStream <- 内存
例:小写字母转大写字母
!避免不必要的字符被转换,使用Character
-public static char toLowerCase(char ch)
-public static int toLowerCase(int codePoint)
-public static char toUpperCase(char ch)
-public static int toUpperCase(int codePoint)
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.io.OutputStream; public class Nice { public static void main(String [] args) throws Exception{ String str = "Hello%World^*!" ; //要求转换的字符串 //本次将通过内存操作流实现转换,先将数据存在内存流里,再从里面取出每一个数据 //将所有要读取的数据设置到内存输入流之中,本次利用向上转型 InputStream input = new ByteArrayInputStream(str.getBytes()); //为了能够将所有的内存流数据取出,使用ByteArrayOutputStream OutputStream output = new ByteArrayOutputStream(); int temp = 0; //读取每一个字节数据 //经过此次循环之后,所有的数据都将保存再内存输出流对象之中 while((temp = input.read()) != -1) { //每一次读取一个数据 output.write(Character.toUpperCase(temp)); //字节输出流 } System.out.println(output); //调用toString()方法 input.close(); output.close(); } }
注意!在ByteArrayOutputStream类里面有一个重要的方法:public byte[] toByteArray()
这个方法可以将所有保存在内存中的字节数据变为字节数组存在
//利用ByteArrayOutputStream,可以实现多个文件的同时读取 //实现文件的合并读取,(假设已经创建两个文件infoa,infob) import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; public class Nice { public static void main(String[] args) throws Exception{ File fileA = new File("文件路径"); File fileB = new File("文件路径"); InputStream inputA = new FileInputStream(fileA); InputStream inputB = new FileInputStream(fileB); ByteArrayOutputStream output = new ByteArrayOutputStream(); int temp = 0; //每次读取一个字节 while((temp = inputA.read()) != -1) { output.write(temp); } while((temp = inputB.read()) != -1) { output.write(temp); } //现在所有的内容都保存再内存输出流里面,所有的内容变为字节数组取出 byte data [] = output.toByteArray(); output.close(); inputA.close(); inputB.close(); System.out.println(new String(data)); } }
相关文章推荐
- Java IO学习笔记(五):内存操作流
- Java IO学习5:内存操作流
- JAVA学习——IO操作(一)
- java_croe 学习笔记之新IO---java.nio 之内存映射文件
- javaIO操作下(内存流、打印流、System的支持)
- Java学习笔记——File类文件管理及IO读写、复制操作
- JavaLearning:JAVA IO 之内存操作流
- Java学习笔记——IO操作之以图片地址下载图片
- Java IO学习札记(IO流操作小技巧)
- Java学习笔记——IO操作之对象序列化及反序列化
- Java学习笔记——File类文件管理及IO读写、复制操作
- 12. JAVA IO Party 2 (内存操作流、管道流、打印流、System类对IO的支持) ----- 学习笔记
- JAVA学习——IO操作(三)
- Java学习—IO—操作规律
- CoreJava学习7——IO之文件操作
- Java IO _内存操作流
- JAVA学习——IO操作(四)——缓冲处理流
- 关于 文件操作 【JAVA_IO】的学习与总结。
- java学习笔记(十三)----IO操作
- Java学习笔记----------------常见IO操作