java基础7:I/O包中的其他类

关于Java基础的文章,我觉得写得还可以,以前发在了我其它的博客了,肯定是原创,现在再分享给大家出来。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

一、对象流(ObjectInputStream/ObjectOutputStream)

1、概述

将堆内存中的对象存入硬盘,保留对象中的数据,称之为对象的持久化(或序列化)。使用到的两个类:ObjectInputStream和ObjectOutputStream

被操作对象需要实现Serializable

2、特点

对象的序列化和反序列化。-----------writeObject  readObject

Serializable标记接口--------------------用于给被序列化的类家里ID号

关键字:transient------------------------短暂的,static和transient的对象都不写入

transient:非静态数据不想被序列化可以使用这个关键字修饰。

3、举例:

public static void readObj() throws IOException, ClassNotFoundException {
		ObjectInputStream ois = new ObjectInputStream(new FileInputStream("obj.object"));
		//对象的反序列化。
		Person p = (Person)ois.readObject();
		System.out.println(p.getName()+":"+p.getAge());
		ois.close();
	}

	public static void writeObj() throws IOException, IOException {
		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("obj.object"));
		//对象序列化。  被序列化的对象必须实现Serializable接口。
		oos.writeObject(new Person("小强",30));
		oos.close();
	}

二、RandomAccessFile随机访问文件:

一、概述

RandomAccessFile此类的实例支持对随机访问文件的读取和写入,自身具备读写方法。

2、特点:

**既可读取,又可以写入。

**内部维护了一个大型的byte数组,通过对数组的操作完成读取和写入。

**通过getFilePointer方法获取指针的位置,还可以通过seek方法设置指针的位置。

**该对象的内容应该封装了字节输入流和字节输出流。

**该对象只能操作文件。

通过seek方法操作指针,可以从这个数组中的任意位置上进行读和写

可以完成对数据的修改。

但是要注意:数据必须有规律。

3、举例:

		//定义一个随机访问文件,可读可写
		RandomAccessFile raf = new RandomAccessFile("ranacc.txt","rw");
		raf.write("张三".getBytes());//写入内容
		raf.writeInt(97);

<span style="white-space:pre">		</span>//通过seek设置指针的位置。
<span style="white-space:pre">		</span>RandomAccessFile raf = new RandomAccessFile("ranacc.txt", "r");
		raf.seek(1*8);//随机的读取。只要指定指针的位置即可。
		byte[] buf = new byte[4];
		raf.read(buf);

三、管道流:

1、概述

管道流包括PipedOutputStream和PipedInputStream ,且需要和多线程技术相结合,不知道多线程的知识大家是否还记得。看例子来回忆。

2、举例

四、DataInputStream与ByteArrayInputStream

1、用操作基本数据类型值的对象。

DataInputStream

DataOutputStream

这两个读写对象,可用于操作基本数据类型的流对象,包含读写各种基本数据类型的方法。

2、设备是内存的流对象。

ByteArrayInputStream ByteArrayOutputStream

CharArrayReader  CharArrayWriter

a、这个对象并没有调用底层资源,所以不用关闭流资源,即使关闭后,仍可调用。

b、内部包含缓冲区,相当于以内存作为流操作源和目的,不会产生任何IO异常。

c、将一个数字写入另一个数组(都是在内存中操作的)

五、最后

本篇博客内容总体来说不太难,但是琐碎,博客介绍的也不是很详细,先把大概的知识了解了,等真正用的时候可以查API文档就好了。

时间: 2024-10-11 16:36:11

java基础7:I/O包中的其他类的相关文章

Java基础---IO(三)--IO包中的其他类

第一讲     对象序列化 一.概述 将堆内存中的对象存入硬盘,保留对象中的数据,称之为对象的持久化(或序列化).使用到的两个类:ObjectInputStream和ObjectOutputStream 二.特有方法 ObjectInputStream: Object readObject();//从ObjcetInputStream中读取对象 ObjectOutputStream: void writeObject(Objcet obj);//将指定对象写入ObjcetOutputStream

黑马程序员——【Java基础】——File类、Properties集合、IO包中的其他类

---------- android培训.java培训.期待与您交流! ---------- 一.File类 (一)概述 1.File类:文件和目录路径名的抽象表现形式 2.作用: (1)用来将文件或文件夹封装成对象 (2)方便于对“文件”与“文件夹属性信息”进行操作 (3)File对象,可以作为参数传递给流的构造函数 (二)构造方法 * 通过File的构造函数创建File对象 方式1:File f = new File("c:\\a.txt"); 方式2:File f2 = newF

java中常用的包、类、以及包中常用的类、方法、属性-----io包

由于最近有需要,所以下面是我整理的在开发中常用的包.类.以及包中常用的类.方法.属性:有需要的看看 java中常用的包.类.以及包中常用的类.方法.属性 常用的包 java.io.*; java.util.*; java.lang.*; java.math.*; java.sql.*; java.text.*; java.awt.*; javax.swing.*;   包名 接口 类 方法 属性 java.io.*; java.io.Serializable实现序列化 java.io.Buffe

Java基础篇Socket网络编程中的应用实例

说到java网络通讯章节的内容,刚入门的学员可能会感到比较头疼,应为Socket通信中一定会伴随有IO流的操作,当然对IO流比较熟练的哥们会觉得这是比较好玩的一章,因为一切都在他们的掌握之中,这样操作起来就显得非常得心应手,但是对于IO本来就不是多熟悉的哥们来说就有一定的困难了,在搞清楚IO流操作机制的同时还必须会应用到Socket通信中去,否则会对得到的结果感到非常郁闷和懊恼,下面就和大家一起分享一下自己遇到一点小麻烦后的感触以及给出的解决办法. 要求:客户端通过Socket通信技术上传本地一

地图包中和定位系统包中的主要类

地图包中的主要类: MapController :  主要控制地图移动,伸缩,以某个GPS坐标为中心,控制MapView中的view组件,管理Overlay,提供View的基本功能.使用多种地图模式(地图模式(某些城市可实时对交通状况进行更新),卫星模式,街景模式)来查看Google Map.常用方法:animateTo(GeoPoint point)  setCenter(GeoPoint point)  setZoom(int zoomLevel) 等. Mapview  : 是用来显示地图

黑马程序员——IO包中的其他类

IO包中的其他类: 1.打印流:提供了打印方法,可以将各种数据类型的数据原样打印     字节打印流PrintStream       构造函数可以接受的参数类型:         (1)File对象  File          (2)字符串路径 String          (3)字节输出流  OutputStream 字符打印流PrintWriter        构造函数可以接受的参数类型:           (1)File对象  File          (2)字符串路径 Str

concurrent包中的TimeUnit类

TimeUnit类是concurrent包中的一个类,主要的方法是实现时间的转换,如天数转换为时间,或从时间转换成天数. 在该类中定义了一个枚举类型:代码为: NANOSECONDS { public long toNanos(long d) { return d; } public long toMicros(long d) { return d/(C1/C0); } public long toMillis(long d) { return d/(C2/C0); } public long

Java基础笔记-异常总结,包

异常:是对问题的描述,将问题进行对象封装, 异常的体系: Throwable: 1.Error 2.Exception 1.RuntimeException 异常体系的特点: 异常体系中的所有类以及建立的对象都具备可抛性.可以被throw和throws关键字所操作,只有异常体系具备这个特点. throw和throws的用法区别: throw定义在函数内,用于抛出异常对象. throws定义在函数上,用于抛出异常类,可以抛出多个并用逗号隔开. 当函数内容有throw抛出异常对象,并未进行tryca

java.net包中的URL类

URI(unform Resources Identifier)是统一资源标识符,用来唯一地标示一个资源,即一个资源对应一个URI.由四部分组成,协议.存放资源的主机域名.资源文件名,端口号. URL(unform Resource Locator)是统一资源定位器,是一种具体的URI.可以把URL看作是指向互联网资源的”指针“. 资源文件名包含文件路径,通常是相对路径,相对于你访问的应用.java.net包有个URL类,提供多种构造方法,有一个参数的,URL( "http://www.baid