Java语言中常用的io类(处理流)
1. BufferedInputStream 和 BufferedOuputStream
2. TransformInputStream 和 TransformOutputStream
3. DataInputStream 和 DataOutputStream
4. ByteArrayInputStream 和 ByteArrayOutputStream
5. PrintStream 和 PrintWriter
6. ObjectInputStream 和 ObjectOutputStream
先来个ObjectIO实例,其他以后再补
1. ObjectInputStream和ObjectOutputStream
主要是对对象的写入与读取操作,也可用于网络的数据传输
实例:
package com.zkl.objectio;
import java.io.Serializable;
/**
* 创建一个学生类,并标记为序列化(实现Serializable接口)
* 该学生有:名字name
* 编号id
* @author zkl1
*
*/
public class Student implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String name=null;
//如果使用了transient关键字,则不会写入
//private transient String name=null;
private long id=0;
public Student(){}
public Student(String name,long id){
this.name=name;
this.id=id;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
public void setId(long id){
this.id=id;
}
public long getId(){
return this.id;
}
public void showData(){
System.out.println(this.name);
System.out.println(this.id);
}
}
package com.zkl.objectio;
/**
* 通过ObjectOutputStream存储的对象必须是可以序列化的
* 而对象必须实现Serializable接口,以标记该对象是可以序列化的。
* Serializable接口没有实现的方法,只是作为序列化标记。
* @author zkl1
*
*/
import java.io.*;
import java.util.*;
public class ObjectIOTest {
/**
* 数据对象写入文件
* @param objs
* @param filename
*/
public void writeObjectToFile(Object[] objs,File filename){
File file = filename;
try {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
for(Object obj:objs){
oos.writeObject(obj);
}
oos.close();
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.getMessage());
}
}
/**
* 从文件中读取数据对象
* @param filename
* @return
* @throws FileNotFoundException
*/
public Object[] readObjectFromFile(File filename) throws FileNotFoundException{
File file = filename;
if(!file.exists()){
throw new FileNotFoundException();
}
//定义一个只存储Student对象的泛型List容器
//List<Student> list = new ArrayList<Student>();
List list = new ArrayList();
try {
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
while(fis.available()>0){
//list.add((Student)ois.readObject());
list.add(ois.readObject());
}
fis.close();
ois.close();
} catch (Exception e) {
// TODO: handle exception
}
return list.toArray();
}
/**
* 将数据对象添加到文件的未尾
* @param objs
* @param filename
* @throws FileNotFoundException
*/
public void appendObjectToFile(Object[] objs,File filename) throws FileNotFoundException{
File file = filename;
//如果文件不存在,则抛出异常
if(!file.exists()){
throw new FileNotFoundException();
}
try {
//不写入标示头,重写writeStreamHeader()函数
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file,true))
{
protected void writeStreamHeader(){}
};
for(Object obj:objs){
oos.writeObject(obj);
}
oos.close();
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.getMessage());
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
File file = new File("c:\\data.dat");
ObjectIOTest oit = new ObjectIOTest();
Object stu[] = {new Student("zkl",12345),
new Student("中国星",5677),
new Student("china34420",8201868)};
oit.writeObjectToFile(stu, file);
try {
Object objs[] = oit.readObjectFromFile(file);
Student st;
for(int i=0;i<objs.length;i++){
if(objs[i] instanceof Student){
st = (Student)objs[i];
st.showData();
}
}
Object st2[] = {new Student("dd",33),new Student("eeee",444) };
oit.appendObjectToFile(st2, file);
System.out.println();
objs = oit.readObjectFromFile(file);
for(Object obj:objs){
((Student)obj).showData();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
分享到:
相关推荐
### 彻底理解Java语言中的IO系统 #### 一、Input和Output Java IO系统是Java编程中的一个重要组成部分,它负责处理程序与外部资源(如文件、网络等)之间的数据交换。Java IO的设计以流为基础,可以分为输入流...
Java IO系统主要由`java.io`包提供支持,该包定义了一系列用于执行输入输出操作的类和接口。这些类和接口共同构建了一个面向对象的模型,使得开发者可以方便地进行数据的读取和写入操作。Java IO系统基于流的概念,...
Java 中的 IO 流是指在 Java 语言中对输入输出操作的抽象,主要用于实现程序与外部设备和其他计算机之间的交流,尤其是对磁盘文件的操作。IO 流的概念是在 1984 年由 C 语言第一次引入的,后来被 Java 语言所采用。 ...
java IO教程,java IO教程,java IO教程,java IO教程java IO教程java IO教程java IO教程java IO教程,java IO教程java IO教程java IO教程java IO教程java IO教程,java IO教程,java IO教程,java IO教程,java IO...
这本教材是针对Java语言中IO流部分的详细讲解,内容基于JDK1.8版本。本课程旨在帮助学生在40小时内掌握Java中的IO流知识,能够熟练地应用于实际开发中。 接下来,我们详细解读该教材中涉及的知识点: 1. System类...
在Java编程语言中,工具类(Utility Class)是包含各种静态方法的类,这些方法用于执行特定任务,如数据操作、文件处理、数学计算等。它们通常不包含实例变量,只提供静态方法服务,帮助开发者提高代码的复用性和...
完整版 Java基础入门教程 Java程序语言设计 01 java语言基础 Java语言概述(共24页).ppt 完整版 Java基础入门教程 Java程序语言设计 02 java语法基础 Java语法基础(共32页).ppt 完整版 Java基础入门教程 Java程序...
Java 中文件 IO 流是指 Java 语言中对文件的输入输出操作,通过定义文件流来实现文件的读写操作。文件流是指在程序中用于文件输入输出的对象, Java 中提供了多种文件流类型,包括 InputStream 和 OutputStream 两大...
Java的IO(输入/输出)系统是其核心库`java.io`的一部分,提供了一系列丰富的接口和类,旨在处理各种数据输入输出场景。在Java中,IO操作主要通过流(Stream)的概念进行管理,所有数据的输入输出都被视为一系列连续...
在IO操作方面,Java的java.io包提供了基础的输入输出流,但实际应用中可能需要更高级的功能,如NIO(New IO)提供非阻塞I/O,Apache Commons IO提供了更多实用的IO工具类。 网络编程中,Java.net包提供了Socket和...
### Java语言中的IO系统知识点详解 #### 一、Java IO系统概述 Java的IO系统是其核心库`java.io`中的重要组成部分,该系统提供了一系列的接口和类,支持多种类型的输入输出操作,如文件读写、标准输入输出等。Java...
Java的IO流是Java编程语言中的重要组成部分,它主要用于数据的输入和输出操作。在Java中,IO流被设计为处理任何类型的数据,包括字符、字节甚至对象。本练习旨在帮助初学者理解和掌握Java IO流的基础知识。 一、IO...
* 运算符:Java 语言中,运算符可以用于进行算术运算、比较运算、逻辑运算等。 * 控制结构:Java 语言中,控制结构可以用于控制程序的执行流程。 * 函数:Java 语言中,函数可以用于封装代码,提高代码的复用性。 * ...
本篇将深入探讨Java IO中的核心类、流的概念、缓冲区技术以及NIO(New IO)框架。 1. **核心IO类** - `InputStream` 和 `OutputStream` 是所有字节流的基类,分别代表输入和输出。它们提供了读写单个字节的基本...
Java 语言定义了许多类专门负责各种方式的输入输出,这些类都被放在 java.io 包中。 File 类 File 类是 IO 包中唯一代表磁盘文件本身的对象,File 类定义了一些与平台无关的方法来操纵文件,通过调用 File 类提供...
Java IO(Input/Output)是 Java 语言中用于处理输入输出操作的类库,提供了大量的类和方法来实现文件、网络、字节流等方面的输入输出操作。下面对 Java IO 中的重要知识点进行详细说明。 一、File 类 File 类是 ...
"java常用工具类"这个主题涵盖了Java开发中常用的类和方法,这些工具类可以帮助我们简化编程工作,提高代码的可读性和可维护性。在Java中,`java.util`包就是这样一个包含大量工具类的包,提供了很多实用的功能。 1...
包装类是 Java 语言中最基本的类之一,它将基本数据类型封装为对象。每个基本数据类型都有对应的包装类,例如 Boolean 对应 boolean、Byte 对应 byte、Short 对应 short、Integer 对应 int、Long 对应 long、...