RandomAccessFile(随即读取)操作文件有4种模式:"r"、"rw"、"rws" 或 "rwd"

原创 2016年08月29日 17:00:55

'r' 以只读方式打开。调用结果对象的任何 write 方法都将导致抛出 IOException
"rw" 打开以便读取和写入。如果该文件尚不存在,则尝试创建该文件。
"rws" 打开以便读取和写入,对于 "rw",还要求对文件的内容或元数据的每个更新都同步写入到底层存储设备。
"rwd"   打开以便读取和写入,对于 "rw",还要求对文件内容的每个更新都同步写入到底层存储设备。

JDK 1.6上面写的每次write数据时,"rw"模式,数据不会立即写到硬盘中;而“rwd”,数据会被立即写入硬盘。如果写数据过程发生异常,“rwd”模式中已被write的数据被保存到硬盘,而“rw"则全部丢失。

  1. /* 
  2. 这类不算是IO体系中的子类。 
  3. 而是直接继承Object 
  4. 但是它是IO包中的成员,因为它具备读和写的功能。 
  5. 能完成读写的原理是内部封装了字节输入流和输出流。 
  6. 而且内部还封装了一个数组,通过指针对数组的元素进行操作。 
  7. 可通过getFilePointer获取指针位置。 
  8. 也可通过seek改变指针的位置。 
  9. 通过构造函数可以看出,该类只能操作文件。 
  10.  
  11. 操作文件有4种模式:"r"、"rw"、"rws" 或 "rwd" 
  12.  
  13. 如果模式为只读r。则不会创建文件,而是会去读取一个已经存在的文件,如果读取的文件不存在则会出现异常。 
  14. 如果模式为rw读写。如果文件不存在则会去创建文件,如果存在则不会创建。 
  15.  
  16. 可以实现多线程下载!因为seek可以调节指针,这样可以开启多个线程,来写相同间隔的数据。 
  17. *public class Day19_05 {

        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    //        test_RandomAcessFile_1();
            test_RandomAcessFile_2();
        }

        //seek()设置文件指针,调用写入方法,会覆盖指针位置开始的数据
        public static void test_RandomAcessFile_2(){
            
            RandomAccessFile raf1 = null;
            try {
                raf1 = new RandomAccessFile("E:\\abc.txt","rw");
                raf1.seek(2);
                raf1.write("QQ".getBytes());
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                
                try {
                    if(raf1 != null)
                       raf1.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            
        }
        
        //读取D:\\abc.txt文件、写入E:\\abc.txt文件
        public static void test_RandomAcessFile_1(){
            RandomAccessFile raf1 = null;
            RandomAccessFile raf2 = null;
            try {
                raf1 = new RandomAccessFile("D:\\abc.txt","r");
                raf2 = new RandomAccessFile("E:\\abc.txt","rw");
                byte[] by = new byte[1024];
                int len = 0;
                while((len = raf1.read(by)) != -1){
                    raf2.write(by, 0, len);
                }
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                
                try {
                    if(raf2 != null)
                       raf2.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                try {
                    if(raf1 != null)
                       raf1.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
            }
            
            
        }
    }


版权声明:本文为博主原创文章,未经博主允许不得转载。

atitit.RandomAccessFile rws rwd 的区别于联系

atitit.RandomAccessFile rws rwd 的区别于联系   1. Rw rws  rwd1 2. "rws" 模式1 3. rwd"模式2     1. Rw rw...
  • attilax
  • attilax
  • 2016年03月14日 00:33
  • 2421

RandomAccessFile(随机读写流)

RandomAccessFile类既不是输入流InputStream的子类,也不是输出流OutputStream的子类。然而RandomAccessFile创建的流的指向方向既可以作为源,也可以作为目...
  • qiu_11
  • qiu_11
  • 2014年01月15日 07:52
  • 2130

rw,rwd,rws是什么

在进行如下代码操作时: RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw"); rw是什么意思呢,其实很...
  • oJianDanai1234567893
  • oJianDanai1234567893
  • 2013年09月22日 14:12
  • 2284

使用RandomAccessFile API

Working with the RandomAccessFile API Files can be created and/or opened for random access in which ...
  • zh_x_wen
  • zh_x_wen
  • 2016年02月17日 13:00
  • 686

Java IO的RandomAccessFile的使用

现有如下的一个需求,向已存在1G数据的txt文本里末尾追加一行文字,内容如下“Lucene是一款非常优秀的全文检索库”。可能大多数朋友会觉得这个需求很easy,说实话,确实easy,然后XXX君开始实...
  • czplplp_900725
  • czplplp_900725
  • 2014年07月15日 09:55
  • 24260

用File和RandomAccessFile新建一个文件

当我们执行File file = new File("test.txt");完毕后,只是创建了一个文件对象,在文件目录下还看不到test.txt文件, 要想真正创建出test.txt文件有两种方式, ...
  • yinzhijiezhan
  • yinzhijiezhan
  • 2015年03月20日 11:27
  • 1527

RandomAccessFile类使用详解

RandomAccessFile类使用详解疯狂java讲义读书笔记之RandomAccessFile类的使用详解1.RandomAccessFile特点  RandomAccessFile是java ...
  • nightcurtis
  • nightcurtis
  • 2016年05月12日 14:56
  • 4775

Java的RandomAccessFile随机文件读写的简单使用

import java.io.*; /** * Created by cuboo on 2016/10/10. */ public class io { public static vo...
  • cheng9981
  • cheng9981
  • 2016年10月10日 19:55
  • 325

Java RandomAccessFile文件操作详解

简介: RandomAccessFile类可以对文件随机访问的操作,访问包括读和写操作。该类的读写是基于指针的操作。 RandomAccessFile对文件进行随机访问操作时有两个模式,一种是只读...
  • shf4715
  • shf4715
  • 2015年07月31日 06:38
  • 5622

rws 和 rwd

元数据被定义为:描述数据的数据,对数据及信息资源的描述性信息。 元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(proper...
  • sunlggggg
  • sunlggggg
  • 2016年11月04日 15:16
  • 113
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:RandomAccessFile(随即读取)操作文件有4种模式:"r"、"rw"、"rws" 或 "rwd"
举报原因:
原因补充:

(最多只允许输入30个字)