本文目录一览:
- 1、RandomAccessFile(File file, String mode) 这个mode指什么?请详细说一下;谢谢啦;
- 2、java的randomaccessfile读写文件中文乱码问题
- 3、RandomAccessFile 中文件名应怎么写
- 4、randomaccessfile写文件还是bufferedwrite快
RandomAccessFile(File file, String mode) 这个mode指什么?请详细说一下;谢谢啦;
官方API解释如下:
RandomAccessFile
public RandomAccessFile(String name,
String mode)
throws FileNotFoundException
创建从中读取和向其中写入(可选)的随机访问文件流,该文件具有指定名称。将创建一个新的 FileDescriptor 对象来表示到文件的连接。
mode 参数指定用以打开文件的访问模式。允许的值及其含意如 RandomAccessFile(File,String) 构造方法所指定的那样。
如果存在安全管理器,则使用 name 作为其参数调用其 checkRead 方法,以查看是否允许对该文件进行读取访问。如果该模式允许写入,那么还使用 name 作为安全管理器的参数来调用其 checkWrite 方法,以查看是否允许对该文件进行写入访问。-randomaccessfile写文件
参数:
name - 取决于系统的文件名
mode - 此访问 mode
抛出:
IllegalArgumentException - 如果此模式参数与 "r"、"rw"、"rws" 或 "rwd" 的其中一个不相等
FileNotFoundException - 如果该模式为 "r",但给定的字符串表示一个现有的常规文件,或者该模式以 "rw" 开头,但给定的字符串不表示一个现有的可写常规文件,而且无法创建具有该名称的新常规文件,或者在打开或创建该文件时发生一些其他错误-randomaccessfile写文件
SecurityException - 如果存在安全管理器,并且其 checkRead 方法拒绝对该文件的读取访问,或者该模式为 "rw",并且该安全管理器的 checkWrite 方法拒绝对该文件的写入访问-randomaccessfile写文件
另请参见:
SecurityException, SecurityManager.checkRead(java.lang.String), SecurityManager.checkWrite(java.lang.String)-randomaccessfile写文件
java的randomaccessfile读写文件中文乱码问题
java中RandomAccessFile存取读写文件,需要用getBytes()先转换编码,中文乱码解决示例):
package Iec104Config;
import java.io.*;
public class Test {
public static void main(String[] args)throws IOException{
String stringToBeSaved="测\naa";
FileWriter saveFile=new FileWriter("Test.txt", false);
PrintWriter savedOut=new PrintWriter(saveFile);
savedOut.print(stringToBeSaved+"\n");
savedOut.close();
RandomAccessFile Open= new RandomAccessFile("Test.txt","r");
String s=Open.readLine();
s=new String(s.getBytes("8859_1"), "gbk");//编码转换
System.out.println(s);
System.out.println(Open.readLine());
RandomAccessFile 中文件名应怎么写
一.
RandomAccessFile
1.
RandomAccessFile
是
Java
输入输出流体系中功能最丰富
的文件内容访问类,它提供了众多的方法来访问文件内
容,它即可以读取文件内容,也可以向文件输出数据。与
普通的输入
/
输出流不同的是,
RandomAccessFile
支持
“随机访问”
的方式,
程序可以直接跳转到文件的任意地
方来读写数据。
注意:
“随机访问”错误的理解是:随机访问是具有不确定
性的:具有一会儿访问这里、一会儿访问哪里的意思!
RandomAccess
的含义:
应该是任意访问,
而不是随机访
问,也就是说
RAM
(随机存取存储器)是可以自由访问任
意的存储点的存储器(与磁盘、磁带等需要寻道、倒带才可
以访问指定存储点等存储器区分)
;
而
RandomAccessFile
的
含义是可以自由访问文件的任意地方(与
InputStream
、
Reader
需要依次向后读取区分)
,
所以,
RandomAccessFile
的含义不是“随机访问”
,而应该
是“任意访问”
。
由于这个原因,如果我们希望只访问文件部分内容,而不
是把文件从头到尾,使用
RandomAccessFile
将是更好的选
择。
2.RandomAccessFile
类有两个构造器,
其实两个构造器基本
相同,
只是指定文件的形式不同而已:
一个使用
String
参数
来指定文件名,一个使用
File
参数来指定文件本身。
RandomAccessFile
是一个很有用的类,
可以将字节流写入到
磁盘文件中,对应的也可以从磁盘文件中读取出字节流,在
API
中关于
RandomAccessFile
的描述如下:
此类的实例支持对随机访问文件的读取和写入。
随机访问文
件的行为类似存储在文件系统中的一个大型
byte
数组。
存
在指向该隐含数组的光标或索引,称为
文件指针
;输入操作
从文件指针开始读取字节,
并随着对字节的读取而前移此文
件指针。如果随机访问文件以读取
/
写入模式创建,则输出
操作也可用;输出操作从文件指针开始写入字节,并随着对
字节的写入而前移此文件指针。
写入隐含数组的当前末尾之
后的输出操作导致该数组扩展。该文件指针可以通过
getFilePointer
方法读取,并通过
seek
方法设置。
通常,
如果此类中的所有读取例程在读取所需数量的字节之
前已到达文件末尾,则抛出
EOFException
(是一种
IOException
,文件结尾了还继续读文件,就导致这个错误
抛出。本来
EOF
的数值就是
-1
,但是是一种用于错误标识
的记号
)。如果由于某些原因无法读取任何字节,而不是在读取所
需数量的字节之前已到达文件末尾,则抛出
IOException
,
而不是
EOFException
。需要特别指出的是,如果流已被关
闭,则可能抛出
IOException
。
randomaccessfile写文件还是bufferedwrite快
小文件RandomAccessFile,大文件BufferedReader。
RandomAccessFile在数据越大,性能越差。因为他是数据文件的一个channel,支持读改原数据文件。
BufferedReader提供处理字符编码的方式,使用InputStreamReader或者DataInputStream之类的。