Java文件操作(一)

获取根目录下所有文件:
File file = new File(".");
File[] subs = dir.listFiles();

listFiles()方法可添加过滤条件:File[] subs = dir.listFiles(MyFileter);

RandomAccessFile
简介:
Java提供了一个可以对文件随机访问的操作,访问包括读和写操作。该类名为RandomAccessFile.该类的读写基于指针的操作。
RandomAccessFile总是在当前指针的位置读写字节。

在创建RandomAccessFile时,其提供的构造方法要求我们传入访问模式:

  • RandomAccessFile(File file ,String mode)
  • RandomAccessFile(String filename ,String mode)
  • 其中构造方法第一个参数是需要访问的文件,第二个参数则是访问模式:“r"只读模式,”rw"读写模式

read():从当前文件中读取一个字节,将该字节存入返回的int中,int值低八位有效。若返回值为-1,则说明读取到了文件末尾,EOF.

若要提高读写效率,最直接的方法就是减少读写次数。

RandomAccessFile提供了一个可以向文件中写出一组字节的方法:write(byte[] b):
该方法会根据当前指针所在位置连续写出给定数组中的所有字节。
与该方法类似的还有个常用方法:write(byte[] d,int offset,int len):
该方法会根据当前指针所在位置连续写出给定数组中的部分字节,这个部分是从数组的offset处开始,连续len个字节

我们现在知道RandomAccessFile的write()方法一次只能写如一个字节,那如果向文件中写如基本数据类型该怎么写如呢?比如写如个int值?`public class RandomAccessFileDemo7 {
public static void main(String[] args) throws IOException {
RandomAccessFile raf = new RandomAccessFile(“raf.dat”,“rw”);

   int num = Integer.MAX_VALUE;
   /*
    * 01111111 11111111 11111111 11111111
    * num>>>24
    */
   raf.write(num>>>24);
   raf.write(num>>>16);
   raf.write(num>>>8);
   raf.write(num);
   raf.close();

}
}

当然还有更简单直接的方法,那就是writeInt(),该方法可以直接写如int值,该方法的底层也是如上述代码那样,通过位移符号去写如的。类似的还有writeDouble,writeLong等。。。`

getFilePointer()
查看RandomAccessFile的指针位置:总是根据当前指针所指向的位置进行读或写操作,并且每次读写后,指针自动向后移动.
那么若想从文件某个位置读写字节,需要先将指针移动到这个位置void seek(long position)

int skipBytes(int n)
该方法会尝试跳过n个字节,返回值为实际跳过的字节数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值