`
sd4886656
  • 浏览: 90091 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

输入流的缓存

 
阅读更多

java网络访问时,一般都会向服务器获取一个输入流 Inpustream in


这个流是不能读第二次的,比方这个流既要decode成Bitmap图片,又要将此图片写本地的话,第二次读的时候,这个流就失效了。


网上有人建议用mark() 来重读,但是有些情况下in是不支持mark()的


所以必须用byte [] 或者神马来缓存一下(当然读一次就够了的情况是不需要了)

 

ByteArrayOutputStream out = ByteArrayOutputStream();
int ch = -1;
while( (ch = os.read()) !=-1 ){
	out.write(ch);
}
byte [] buf = out.toByteArray();// InputStream 转 byte数组
//相反 byte数组也可以转化成流 
ByteArrayInputStream in = new ByteArrayInputStream(array);//一行代码,byte [] 转流

File file = new File(path+File.separator+id+tname);
					
try {
	file.createNewFile();
} catch (IOException e) {
	e.printStackTrace();
	return false;							
}

DataOutputStream out = new DataOutputStream(new FileOutputStream(file));
int ch;
while((ch = in.read()) != -1){
	out.write(ch);
}
out.flush();
out.close();//
 
分享到:
评论

相关推荐

    TCP编程——网络编程详细源码

    // 构造输入流缓存 BufferedReader bufReader = new BufferedReader( new InputStreamReader(clientInput)); // 按行读取输入内容 String strLine = bufReader.readLine(); if ("OVER"....

    [详细完整版]程序设计举例.ppt

    在这个PPT文档中,涵盖了多个C++编程的实例,涉及了变量的大小、输入流缓存的处理、位运算、算法实现等多个方面。以下是对这些知识点的详细说明: 1. **关于`sizeof`运算符**: `sizeof`运算符用于计算在内存中...

    数据结构实验报告 (2).docx

    为了解决这些问题,可以使用`fflush(stdin)`清除输入流缓存,或者利用Visual Studio的调试工具进行逐行调试,以定位并修复问题。 实验后的经验和体会部分,提到了可能的算法改进方向。例如,可以通过优化节点复制的...

    BufferedInputStream(缓冲输入流)详解_动力节点Java学院整理

    BufferedInputStream(缓冲输入流)详解 BufferedInputStream 是 Java 中的一种缓冲输入流,继承自 FilterInputStream。它的主要作用是为另一个输入流添加一些功能,例如提供“缓冲功能”和支持“mark() 标记”和...

    java的输入输出流

    例如,FileInputStream类是用于从文件读取字节的输入流,可以通过文件路径、File对象或FileDescriptor对象进行初始化。而ByteArrayInputStream则允许我们从一个字节数组中读取数据。 对于输出流,OutputStream类是...

    Java 输入输出流 源码

    它们都有输入流(InputStream/Reader)和输出流(OutputStream/Writer)的区别,分别负责数据的读取和写入。 2. **字节流**:InputStream和OutputStream是所有字节流的基类,如FileInputStream和FileOutputStream...

    java输入输出流与文件处理

    根据数据流动的方向,流被分为**输入流**(Input Stream)和**输出流**(Output Stream)。输入流负责从数据源读取数据,而输出流则负责将数据写入目的地。数据流可以处理原始二进制数据,也可以处理经过特定格式化...

    windows缓存管理(英文版)

    4. **支持快速I/O**:允许某些输入/输出请求绕过缓存管理器,直接发送到硬件设备,从而实现更快的响应时间。 #### 四、缓存管理器的使用者 缓存管理器被广泛应用于多种场景中,包括但不限于: 1. **磁盘文件系统*...

    Android 文件缓存

    `IOUtil`类可以处理输入/输出流;`JsonUtil`用于序列化和反序列化Java对象为JSON字符串,便于存储到文本文件中。这些工具类的封装可以大大提高代码的可读性和可维护性。 5. **最佳实践**:在使用文件缓存时,应遵循...

    存储子系统lun中的缓存管理的实现

    - `lun_io.c` 可能负责处理LUN的输入输出操作,包括如何将上层应用的I/O请求映射到缓存操作,并协调缓存和物理磁盘之间的数据传输。 - `lun_cache.h`, `lun_bio_cache.h` 和 `lun_io.h` 是对应的头文件,定义了相关...

    Java IO流 总结

    BufferedInputStream和BufferedReader是缓冲流的输入流,负责将数据缓存在内存中,以提高输入性能。 b) 输出流:BufferedOutputStream BufferedWriter BufferedOutputStream和BufferedWriter是缓冲流的输出流,...

    基于FPGA的图像输入缓存机制研究.pdf

    本文讨论了在FPGA(现场可编程门阵列)上实现图像处理算法时,如何设计一个有效的图像输入缓存机制。FPGA是一种特殊的集成电路,允许开发者通过编程来定义其内部逻辑功能。由于FPGA的资源限制性,如何高效地在片内...

    JAVA输入输出流资料

    - `InputStreamReader` 从字节输入流读取字节并转换为字符。 **字符流的过滤器流**: - `FilterReader` 和 `FilterWriter` 提供了对字符输入和输出流的过滤和扩展功能,例如 `BufferedReader` 和 `BufferedWriter` ...

    分布式数据流计算系统的数据缓存技术综述.docx

    为了应对这些问题,需要设计专门的数据流缓存系统,确保数据在各个计算节点之间高效传输。 #### 五、数据流缓存系统的重要性 在分布式数据流系统中,算子和数据不再统一存在于单机内存中。这可能导致数据堆积或...

    Java IO流文档

    - `SequenceInputStream`:将多个输入流组合成一个输入流。 - **OutputStream**:代表数据目的的输出流。 - `ByteArrayOutputStream`:将数据输出到内存中的字节数组。 - `FileOutputStream`:用于向磁盘文件写入...

    乒乓缓存的设计

    由于乒乓缓存结构具有并行处理能力,它能够有效地在DSP图像处理系统中提供适应通道,使得视频编解码与DSP图像处理之间的数据流能够高效地转换和传输。 在乒乓球缓存中,涉及到几种常见数据缓存电路的比较。例如,...

    Android上SD卡图片的标准缓存方法

    读取缓存时,通过key获取输入流,然后读取数据并转换回图片对象: ```java DiskLruCache.Snapshot snapshot = diskLruCache.get(key); if (snapshot != null) { InputStream in = snapshot.getInputStream...

    Android应用源码之图片异步缓存两层缓存.zip

    9. **资源释放**:为防止内存泄漏,加载图片后需及时释放资源,如关闭输入流,取消网络请求等。 通过对这个项目的学习,开发者可以深入理解Android中图片异步加载和缓存的原理,掌握如何在实际应用中优化图片加载...

    清空缓存区1

    需要注意的是,`fflush()`对于标准输入流的刷新可能不是所有平台都支持,且返回EOF时可能意味着数据丢失。 2. 使用`while((ch = getchar()) != '\n' && ch != EOF);`语句:这是一种更通用的方法,它可以持续读取...

Global site tag (gtag.js) - Google Analytics