`
china34420
  • 浏览: 136407 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java语言中常用的io类

    博客分类:
  • Java
阅读更多
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系统

    ### 彻底理解Java语言中的IO系统 #### 一、Input和Output Java IO系统是Java编程中的一个重要组成部分,它负责处理程序与外部资源(如文件、网络等)之间的数据交换。Java IO的设计以流为基础,可以分为输入流...

    Java,彻底明白Java语言中的IO系统

    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教程,java IO教程,java IO...

    徐葳《40小时掌握java语言之08IO流》内部教材

    这本教材是针对Java语言中IO流部分的详细讲解,内容基于JDK1.8版本。本课程旨在帮助学生在40小时内掌握Java中的IO流知识,能够熟练地应用于实际开发中。 接下来,我们详细解读该教材中涉及的知识点: 1. System类...

    java常用的工具类整理28个

    在Java编程语言中,工具类(Utility Class)是包含各种静态方法的类,这些方法用于执行特定任务,如数据操作、文件处理、数学计算等。它们通常不包含实例变量,只提供静态方法服务,帮助开发者提高代码的复用性和...

    完整版 Java基础入门教程 Java程序语言设计 04 IO流 输入输出流(共31页).ppt

    完整版 Java基础入门教程 Java程序语言设计 01 java语言基础 Java语言概述(共24页).ppt 完整版 Java基础入门教程 Java程序语言设计 02 java语法基础 Java语法基础(共32页).ppt 完整版 Java基础入门教程 Java程序...

    Java中文件IO流.pdf

    Java 中文件 IO 流是指 Java 语言中对文件的输入输出操作,通过定义文件流来实现文件的读写操作。文件流是指在程序中用于文件输入输出的对象, Java 中提供了多种文件流类型,包括 InputStream 和 OutputStream 两大...

    彻底明白 Java 语言中的IO系统 .pdf

    Java的IO(输入/输出)系统是其核心库`java.io`的一部分,提供了一系列丰富的接口和类,旨在处理各种数据输入输出场景。在Java中,IO操作主要通过流(Stream)的概念进行管理,所有数据的输入输出都被视为一系列连续...

    一些java常用的工具类

    在IO操作方面,Java的java.io包提供了基础的输入输出流,但实际应用中可能需要更高级的功能,如NIO(New IO)提供非阻塞I/O,Apache Commons IO提供了更多实用的IO工具类。 网络编程中,Java.net包提供了Socket和...

    Java语言中的IO系统_.docx

    ### Java语言中的IO系统知识点详解 #### 一、Java IO系统概述 Java的IO系统是其核心库`java.io`中的重要组成部分,该系统提供了一系列的接口和类,支持多种类型的输入输出操作,如文件读写、标准输入输出等。Java...

    Java-Io流,练习

    Java的IO流是Java编程语言中的重要组成部分,它主要用于数据的输入和输出操作。在Java中,IO流被设计为处理任何类型的数据,包括字符、字节甚至对象。本练习旨在帮助初学者理解和掌握Java IO流的基础知识。 一、IO...

    2022年java语言-java语言程序设计.docx

    * 运算符:Java 语言中,运算符可以用于进行算术运算、比较运算、逻辑运算等。 * 控制结构:Java 语言中,控制结构可以用于控制程序的执行流程。 * 函数:Java 语言中,函数可以用于封装代码,提高代码的复用性。 * ...

    JavaIO大部分类

    本篇将深入探讨Java IO中的核心类、流的概念、缓冲区技术以及NIO(New IO)框架。 1. **核心IO类** - `InputStream` 和 `OutputStream` 是所有字节流的基类,分别代表输入和输出。它们提供了读写单个字节的基本...

    java中的io详解.

    Java 语言定义了许多类专门负责各种方式的输入输出,这些类都被放在 java.io 包中。 File 类 File 类是 IO 包中唯一代表磁盘文件本身的对象,File 类定义了一些与平台无关的方法来操纵文件,通过调用 File 类提供...

    Java教程之javaIO详解

    Java IO(Input/Output)是 Java 语言中用于处理输入输出操作的类库,提供了大量的类和方法来实现文件、网络、字节流等方面的输入输出操作。下面对 Java IO 中的重要知识点进行详细说明。 一、File 类 File 类是 ...

    java常用工具类

    "java常用工具类"这个主题涵盖了Java开发中常用的类和方法,这些工具类可以帮助我们简化编程工作,提高代码的可读性和可维护性。在Java中,`java.util`包就是这样一个包含大量工具类的包,提供了很多实用的功能。 1...

    Java常用的基础类

    包装类是 Java 语言中最基本的类之一,它将基本数据类型封装为对象。每个基本数据类型都有对应的包装类,例如 Boolean 对应 boolean、Byte 对应 byte、Short 对应 short、Integer 对应 int、Long 对应 long、...

Global site tag (gtag.js) - Google Analytics