`
msn877763580
  • 浏览: 81360 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Java IO 之RandomAccessFile

阅读更多

一、了解数据流概念



 数据量其实就是一系列的"010..."的比特串

那么我们如何传递和接受这些比特串呢?下面将介绍一个类RandomAccessFile,该类就可以实现这样的功能。

二、使用RandomAccessFile类

首先,我们要了解一下什么是随机访问:随机访问(有时又称为直接访问)是指同一时间访问一组序列中的一个随意元件;反之我们称另一种访问方式为循序访问。我们可以把文件想象成一些列的比特串存放在一个数组中,随机访问就是指,我们可以任意的访问其中的一个数,而不必进行循序访问。

我们要介绍的这个类就是用于随机访问文件的类:RandomAccessFile,为了便于随机读取,下面的例子限制了字符串的长度。

 

下面我们首先看一组常用的API,大概了解即可:

RandomAccessFile(File file, String mode) 创建从中读取和向其中写入(可选)的随机访问文件流,该文件由 File 参数指定。

RandomAccessFile(String name, String mode) 创建从中读取和向其中写入(可选)的随机访问文件流,该文件具有指定名称。

void close() 关闭此随机访问文件流并释放与该流关联的所有系统资源。 

long length() 返回此文件的长度。 

int skipBytes(int n) 尝试跳过输入的 个字节以丢弃跳过的字节。 

读取数据相关:

int read() 从此文件中读取一个数据字节。 

int read(byte[] b) 将最多 b.length 个数据字节从此文件读入 byte 数组。 

int read(byte[] b, int off, int len) 将最多 len 个数据字节从此文件读入 byte 数组。 

boolean readBoolean() 从此文件读取一个 boolean。 

byte readByte() 从此文件读取一个有符号的八位值。 

char readChar() 从此文件读取一个字符。 

…… ……其他数据类型相似

String readLine() 从此文件读取文本的下一行。 

写入数据

 void write(byte[] b) 将 b.length 个字节从指定 byte 数组写入到此文件,并从当前文件指针开始。 

 void write(byte[] b, int off, int len) 将 len 个字节从指定 byte 数组写入到此文件,并从偏移量 off 处开始。 

 void write(int b) 向此文件写入指定的字节。 

 void writeBoolean(boolean v) 按单字节值将 boolean 写入该文件。 

 void writeByte(int v) 按单字节值将 byte 写入该文件。 

 void writeBytes(String s) 按字节序列将该字符串写入该文件。

 void writeChar(int v) 按双字节值将 char 写入该文件,先写高字节。 

 void writeChars(String s) 按字符序列将一个字符串写入该文件。 

…… ……

 

import java.io.*;
import java.util.Arrays;
public class RandomAccessDemo01 {
	public static void main(String[] args)throws IOException {

			RandomAccessFile raf01 = new RandomAccessFile("D:/FileTest/raf.txt","rw");
			//写入一组数据限定字符串4位
			String strTest = "abcd";
			int iTest = 33;
			raf01.write(strTest.getBytes());
			raf01.writeInt(iTest);

			//再写入一组数据
			strTest = "mnuv";
			iTest = 32;
			raf01.write(strTest.getBytes());
			raf01.writeInt(iTest);
			raf01.close();
			
			//下面我们读取第二组数据
			RandomAccessFile raf02 = new RandomAccessFile("D:/FileTest/raf.txt","r");
			raf02.skipBytes(8);
			byte[] bTest = new byte[4];
			raf02.read(bTest);
			System.out.println("字符串数据:"+new String(bTest)+",整型数据为:"+raf02.readInt());
	}
}

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

字符串数据:mnuv,整型数据为:32

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

更多方法参考API

  • 大小: 43.9 KB
分享到:
评论

相关推荐

    Java中IO流 RandomAccessFile类实例详解

    主要介绍了Java中IO流 RandomAccessFile类实例详解的相关资料,需要的朋友可以参考下

    Java的IO流讲解代码: File 类、RandomAccessFile 类、字节流(文件字节流、缓冲字节流、基本数据类型

    该代码源码资源是一个用于讲解Java IO流的示例代码库。它包含了常见的IO类和方法的使用示例,旨在帮助理解和掌握Java中的输入输出操作。 包含: File 类、RandomAccessFile 类、字节流(文件字节流、缓冲字节流、...

    RandomAccessFile的用法

    java api中的java.io.RandomAccessFile类实现文件的随机写入.

    java基础——IO流及File-RandomAccessFile对象.docx

    java基础——IO流及File-RandomAccessFile对象.docx

    10.尚硅谷_java基础_IO

    IO 概述 File 类 IO 流分类 InputStream & Reader OutputStream & Writer RandomAccessFile 类 对象的序列化

    Java IO期末复习||五类一接口

    Java IO五类一接口 文件操作类File、RandomAccessFile 字节输出流OutputStream、字节输入流InputStream 字符输出流Writer、字符输入流Reader 打印流、输入输出重定向 Scanner类 字符编码 序列化操作标识接口...

    ReadWriteTxt.java

    import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream;...import java.io.RandomAccessFile;

    Java IO, NIO and NIO.2(Apress,2015)

    Java I/O, NIO, and NIO.2 is a power-packed book that accelerates your mastery of Java's various I/O APIs. In this book, you'll learn about classic I/O APIs (File, RandomAccessFile, the stream classes ...

    Java IO, NIO and NIO.2 原版pdf by Friesen

    RandomAccessFile classes along with streams (including object serialization and externalization) and writers/readers. Chapters 6 through 11 focus on NIO. You explore buffers, channels, selectors, ...

    (超赞)JAVA精华之--深入JAVA API

    1 JAVA SE 1.1 深入JAVA API 1.1.1 Lang包 1.1.2 集合类 1.1.2.1.1 日期类Date 1.1.2.1.2 日历类Calendar 1.1.2.1.3 随机数类Random 1.1.2.1.4 向量类Vector ...4.2 Java IO 包中的Decorator模式

    Java之IO流学习总结

    Java IO流学习总结 Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据...

    Java开发详解.zip

    031202_【第12章:JAVA IO】_RandomAccessFile笔记.pdf 031203_【第12章:JAVA IO】_字节流与字符流笔记.pdf 031204_【第12章:JAVA IO】_字节-字符转换流笔记.pdf 031205_【第12章:JAVA IO】_内存操作流笔记.pdf ...

    使用RandomAccessFile递归修改文件

    因为使用其他文件流修改文件时是整体的替换,导致SVN上传上去后是整个文件都修改了,所以需要增量修改,这个demo是使用RandomAccessFile增量修改,只修改指定的行,很实用

    Java实现文件分割和文件合并实例

    文件切割和文件合并这个问题困扰了我有一段时间了(超过一天没做粗来)。...import java.io.RandomAccessFile; import java.util.Scanner; public class Main { public static void main(String[] arg

    JAVA SE学习精华集锦

    1 JAVA SE 2 1.1 深入JAVA API 2 1.1.1 Lang包 2 1.1.2 集合类 8 1.1.2.1.1 日期类Date 9 1.1.2.1.2 日历类Calendar 10 1.1.2.1.3 随机数类Random 11 1.1.2.1.4 向量类Vector 12...4.2 Java IO 包中的Decorator模式 168

    Android关于FTP文件上传和下载功能详解

    本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 此篇博客为整理文章,供大家学习。 ... FTP的文件上传和下载的工具类: ...import java.io.RandomAccessFile; imp

    java中文文件读写类

    最近在用java的IO包下面的RandomAccessFile类读写中文文件时遇到了乱码问题,解决不了。于是索性自己写个类,可以进行中文文件读写而不乱码。 压缩包里提供了.jar包和源代码。 ************************************...

    Android编程开发实现带进度条和百分比的多线程下载

    本文实例讲述了Android编程开发实现带进度条和百分比的多线程下载。分享给大家供大家参考,具体如下: ...import java.io.RandomAccessFile; import java.net.HttpURLConnection; import java.net.MalformedURLExce

    用Java语言开发的网络蚂蚁,很实用哦

    import java.io.*; import java.net.*; public class DownLoad{ URL url; String objFile; long nStartPos; RandomAccessFile rf; public DownLoad(String objFile,long nStartPos) throws IOException{ this...

    JAVA基础课程讲义

    JAVA.IO包相关流对象用法总结(尚学堂1002班王鑫) 165 IO中其他常用类 165 File类 165 RandomAccessFile 166 思考作业 166 上机作业 166 提高课外作业 166 第九章 多线程技术 167 基本概念 167 程序 167 进程 167 ...

Global site tag (gtag.js) - Google Analytics