package com.sun;
/**
* 使用对象流实现将大量的数据输入磁盘缓存,并且将它们读出来。
*/
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class Testobject {
public static void main(String[] args) throws IOException, ClassNotFoundException {
//使用动态数组将对象存入其中
List<Student> list=new ArrayList<Student>();
for(int i=0;i<10;i++){
Student stu=new Student("张"+i,i+10);
list.add(stu);
}
//利用对象流将对象存到student.dat这个文件里
File f=new File("student.dat");
FileOutputStream fos=new FileOutputStream(f);
ObjectOutputStream oos=new ObjectOutputStream(fos);
oos.writeObject(list);
oos.flush();
fos.flush();
oos.close();
fos.close();
//将对象输出,用到了对象输出流
FileInputStream fis=new FileInputStream(new File("Student.dat"));
ObjectInputStream ois=new ObjectInputStream(fis);
List<Student> list1=(List<Student>)ois.readObject();
for(Student s:list1){
System.out.println(s);
}
ois.close();
fis.close();
}
}
class Student implements Serializable{
/**
* 创建一个学生类并将使其实现Serializable接口
*/
private static final long serialVersionUID = 1L;
private String name;
private int id;
public Student() {
super();
}
@Override
public String toString() {
// TODO Auto-generated method stub
return getClass().getName()+"\t"+name+"\t"+id;
}
public Student(String name, int id) {
super();
this.name = name;
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
分享到:
相关推荐
6. **缓冲流**:BufferedInputStream、BufferedOutputStream、BufferedReader和BufferedWriter提供了一种缓存机制,可以一次性读取或写入大量数据,从而提高性能。 7. **过滤流**:FilterInputStream、...
Android提供了多种缓存策略,如内存缓存(`LruCache`)和磁盘缓存(`SQLite`数据库、`SharedPreference`或`File`系统)。 结合`recyclerView`和`listView`,这些视图组件常用于展示大量数据,如网络获取的列表。...
- 使用内存和磁盘双重缓存,当内存缓存溢出时,将数据写入磁盘。 - 使用Picasso、Glide等库,它们内置了缓存机制,可以简化图片加载过程。 - 考虑使用RecyclerView替代ListView,因为它有更好的性能优化。 总之,...
- 数据处理:在处理大量数据时,内存流可以帮助我们分块读取和写入,避免一次性加载整个文件到内存中导致的性能问题。 - 文件操作:在读取、修改和写回文件时,可以先将文件内容读入内存流,处理后写回,这样可以...
同时,利用缓冲流、异步IO等技术手段,可以显著提高程序的运行效率,特别是在处理大量数据时。 #### 六、高级应用与设计模式 ##### 字符集编码问题 处理字符集编码问题是IO编程中的常见挑战,尤其是当数据来源于...
`Ehcache`是一个本地内存缓存,它支持内存和磁盘存储,并且可以设置缓存策略来决定何时将数据移入或移出内存。`Memcached`则是一个分布式缓存系统,通常应用于多服务器环境,它可以将数据存储在内存中,提供快速的...
在构建一个文件管理系统时,设计思想、数据结构设计、实体关系图(ER图)、数据流图(DFD)和程序流程图是至关重要的组成部分。这些工具和技术帮助我们规划、理解和实现一个高效、可扩展的系统。 首先,设计要求是...
序列化是将对象转换为字节流的过程,以便可以存储在磁盘上、通过网络发送或在不同时间恢复为原始对象。在缓存中处理序列化对象时,我们需要关注以下几点: 1. **序列化协议**:Java内置了默认的序列化机制,但也...
为了提高效率,Java提供了缓冲流BufferedInputStream和BufferedOutputStream,它们可以缓存数据,减少频繁的磁盘I/O操作。此外,ObjectInputStream和ObjectOutputStream允许我们将Java对象序列化和反序列化,这对于...
缓冲区允许我们一次性读取或写入大量数据,而不是一次一个字节,从而减少了磁盘或网络I/O的次数。 转换流是Java IO中的另一个重要概念,它允许我们在字节流和字符流之间进行转换。InputStreamReader和...
附带直接查看,按类显示等”,意味着这个软件不仅能够帮助用户提取缓存中的各种类型的数据,如图片、HTML文件、Flash对象等,还提供了查看这些文件的功能,用户可以无需通过浏览器直接打开它们。更重要的是,它支持...
此外,还有缓冲流、过滤流和转换流等概念,它们分别提供了缓存数据、添加功能和不同流之间的转换等能力。 1. **文件拷贝**:在Java中,我们可以使用`FileInputStream`和`FileOutputStream`来实现文件的复制。这段...
3. **处理缓存**:为了提高性能和减少网络请求,可以将图片缓存在内存或磁盘。Picasso和Glide都内置了高效的缓存策略。 4. **优化滚动**:当ListView滚动时,避免不必要的图片加载。可以复用convertView(通过`...
3. **缓存序列化结果**:对于频繁访问的对象,可以缓存它们的序列化形式,以减少重复序列化带来的开销。 4. **压缩数据**:在序列化数据之前对其进行压缩可以减少传输的数据量,特别是在网络传输中非常有用。 5. **...
4. **处理大型数据集**:当处理大量数据时,效率和内存管理成为关键。EPPlus库特别适合这种情况,因为它可以直接将数据写入内存中的表格模型,避免了逐个单元格操作的低效。同时,它还支持批处理写入,进一步提高了...
- **集群模式**:适用于需要处理大量数据或高并发请求的应用场景。 - **哨兵模式**:适用于对服务连续性和数据一致性要求较高的场景。 #### 22. 在使用Redis时,如何进行性能优化?请列举几种常见的Redis性能优化...
5. 集群搭建:如果需要处理大量数据或提高可用性,可以通过Redis Cluster搭建分布式集群。 6. 性能优化:提供一些调优技巧,如调整配置参数、内存管理、客户端连接控制等。 7. 安全性:讨论如何保护Redis免受攻击...
C盘通常作为操作系统的主要安装位置,随着时间的推移,它可能会积累大量的临时文件、日志文件、系统更新缓存、不再使用的软件等,这些都会占用宝贵的磁盘空间。定期进行C盘清理有助于保持系统的稳定性和性能。 ...
在Android开发中,异步加载是一项关键的技术,主要用于提高用户体验,特别是当处理大量数据或进行耗时操作时,如在ListView、RecyclerView等滚动视图中加载图片。本篇将深入探讨Android异步加载的原理、实现方式以及...
- 对于大量数据的读取,可以使用BufferedStream来缓存数据,减少磁盘I/O次数,提高读取速度。 8. 文件路径处理: - 文件路径可以是绝对路径或相对路径。相对路径是相对于执行程序的位置,而绝对路径是完整的文件...