public static void RandomAccessTemp(String path,String mode){
File tempFile = null;
RandomAccessFile raf = null;
FileOutputStream out = null;
FileInputStream input = null;
try {
tempFile =File.createTempFile("temp","_temp");
tempFile.deleteOnExit();
out = new FileOutputStream(tempFile);
input=new FileInputStream(tempFile);
raf = new RandomAccessFile(path,mode);
raf.seek(0);
byte[] buff = new byte[1024];
int len = 0;
while ((len = raf.read(buff))>0){
out.write(buff,0,len);
System.out.println(new String(buff,0,len));
raf.seek(0);
raf.writeBytes("my name's Toms!");
while ((len = input.read(buff))>0){
raf.write(buff,0,len);
out.close();
input.close();
}catch (Exception e){
e.printStackTrace();
}finally {
if(raf != null){
try {
raf.close();
} catch (IOException e) {
e.printStackTrace();
void close() :关闭此随机访问文件流并释放与该流关联的所有系统资源。
FileChannel getChannel() : 返回与此文件关联的唯一 FileChannel 对象。
FileDescriptor getFD() :返回与此流关联的不透明文件描述符对象。
long getFilePointer() :返回此文件中的当前偏移量。
long length() :返回此文件的长度。
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() :从此文件读取一个字符。
double readDouble() :从此文件读取一个 double。
float readFloat() :从此文件读取一个 float。
void readFully(byte[] b) : 将 b.length 个字节从此文件读入 byte 数组,并从当前文件指针开始。
void readFully(byte[] b, int off, int len) :将正好 len 个字节从此文件读入 byte 数组,并从当前文件指针开始。
int readInt() :从此文件读取一个有符号的 32 位整数。
String readLine() :从此文件读取文本的下一行。
long readLong() : 从此文件读取一个有符号的 64 位整数。
short readShort() :从此文件读取一个有符号的 16 位数。
int readUnsignedByte() :从此文件读取一个无符号的八位数。
int readUnsignedShort() :从此文件读取一个无符号的 16 位数。
String readUTF() :从此文件读取一个字符串。
void seek(long pos) :设置到此文件开头测量到的文件指针偏移量,在该位置发生下一个读取或写入操作。
void setLength(long newLength) :设置此文件的长度。
int skipBytes(int n) :尝试跳过输入的 n 个字节以丢弃跳过的字节。
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) : 按字符序列将一个字符串写入该文件。
void writeDouble(double v) :使用 Double 类中的 doubleToLongBits 方法将双精度参数转换为一个 long,然后按八字节数量将该 long 值写入该文件,先定高字节。
void writeFloat(float v) :使用 Float 类中的 floatToIntBits 方法将浮点参数转换为一个 int,然后按四字节数量将该 int 值写入该文件,先写高字节。
void writeInt(int v) :按四个字节将 int 写入该文件,先写高字节。
void writeLong(long v) :按八个字节将 long 写入该文件,先写高字节。
void writeShort(int v) :按两个字节将 short 写入该文件,先写高字节。
void writeUTF(String str) :使用 modified UTF-8 编码以与机器无关的方式将一个字符串写入该文件。
RandomAccessFile是Java 输入/输出流体系中功能最丰富的文件内容访问类,它提供了众多的方法来访问文件内容,它既可以读取文件内容,也可以向文件输出数据。与普通的输入/输出流不同的是,RandomAccessFile支持"随机访问"的方式,程序可以直接跳转到文件的任意地方来读写数据。
RandomAccessFile可以自由访问文件的任意位置。
RandomAccessFile允许自由定位文件记录指针。
RandomAccessFile只能读写文件而不是流。
本文将简要介绍这个类的使用,主要包括RandomAccessFile相关的一些概念,常见API的使用,如何利用RandomAccessFile实现一个断点续传的效果RandomAccessFile是什么?是 Java 中用于对文件进行随机访问的类。与普通的输入输出流不同,允许在文件中任意位置读写数据。RandomAccessFile的作用有哪些?随机访问:与其他输入输出流不同,允许在文件中任意位置进行读写操作,可以自由地定位文件指针。读写基本数据类型实现了DataInput和DataOutput。
RandomAccessFile、FileInputStream、MappedByteBuffer、FileChannel 比较这些类都是Java中用于文件I/O操作的类,但各有特点和适用场景。下面我将详细介绍它们的区别、使用场景以及相关类。
1.RandomAccessFile特点
RandomAccessFile是java Io体系中功能最丰富的文件内容访问类。即可以读取文件内容,也可以向文件中写入内容。但是和其他输入/输入流不同的是,程序可以直接跳到文件的任意位置来读写数据。
因为RandomAccessFile可以自由访问文件的任意位置,所以如果我们希望只访问文件的部分内容,那就可以使用RandomAccessFile类。
与OutputStearm,Writer等输出流不同的是,RandomAccessFile类允许自由定位文件
一、RandomAccessFile介绍
RandomAccessFile支持对文件的读取和写入随机访问(其他的输入流或者输出流只能进行一种操作,要么输入,要么输出)。RandomAccessFile把随机访问的文件对象看作存储在文件系统中的一个大型 byte 数组,然后通过指向该 byte 数组的光标或索引(即:文件指针 FilePointer)在该数组任意位置读取或写入任意数据。输入操作从文件指针开始读取字节(以字节为单位进行读取),并随着对字节的读取而前移此文件指针。如果RandomAccessFi
任意流(随机流)——RandomAccessFile。可以在文件的任何位置开始读写!与其他流不一样,这个流是独立于其他IO家族之外的,并不继承与InputStream、OutputStream而是直接继承于Object,但他是IO包中的,因为它支持IO操作。
RandomAccessFile有四种操作文件模式:
以只读方式打开。如果读取的文件不存在则会出现异常,调用结果对象的任何...
RandomAccessFile 是 Java 中一个非常特殊的类,它既可以用来读取文件,也可以用来写入文件。与其他 IO 类(如 FileInputStream 和 FileOutputStream)不同,RandomAccessFile 允许您跳转到文件的任何位置,从那里开始读取或写入。这使得它特别适用于需要在文件中随机访问数据的场景,如数据库系统。为了避免中文乱码问题,我们使用 RandomAccessFile 的 writeUTF 和 readUTF 方法,它们将使用 UTF-8 编码处理字符串。
RandomAccessFile它处理文件的方式与众不同:既可以读取文件内容,也可以向文件写出数据;而且可以随意定位到文件不同位置进行读和写。
RandomAccessFile在底层把文件当作一个大型字节数组,可按字节进行索引。刚打开文件时文件指针位于文件起始处其索引为0;读取数据时文件指针随着字节的读取而往前移动指针;写出数据时文件指针也随着字节的写出而移动。当写出数据时,若文件指针超过了文件结尾,则会对字节数组自动扩容。
2、将文件中的字节数据,当作数组,用下标访问指定位置的字节值
RandomAccessFile 既可以读取文件内容,也可以向文件输出数据。同时,RandomAccessFile 支持“随机访问”的方式,程序快可以直接跳转到文件的任意地方来读写数据。
由于 RandomAccessFile 可以自由访问文件的任意位置,所以如果需要访...
是JAVA I/O流体系中功能最丰富的文件内容访问类,它提供了众多方法来访问文件内容。该类的主要目的是提供为读写文件提供更高的可操作性。
RandomAccessFile是Java输入/输出流体系中功能最丰富的文件内容访问类,既可以读取文件内容,也可以向文件输出数据。与普通的输入/输出流不同的是,RandomAccessFile支持跳到文件任意位置读写数据,RandomAccessFile对...