`
samttsch
  • 浏览: 62988 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

RandomAccessFile方法使用测试

阅读更多
public class Test {
	public static void main(String[] args) throws IOException, InterruptedException {
	    test1();
//	    test2();
	    test3();
	}
	
	private static void test1() throws IOException{
	    
	    String filePath = "F:/shanch/temp/a.txt";
	    
	    //RandomAccessFile没有会自动创建文件
	    RandomAccessFile raFile = new RandomAccessFile(filePath,"rw");
	    System.out.println(raFile.getFilePointer());
	    
	    //setLength会往文件里面写入空白串 即byte 00
	    raFile.setLength(36);
	    
	    raFile.writeBytes("0123456789abcdefghijklmnopqrstuvwxyz1111");
	    
	    System.out.println(raFile.getFilePointer());
	    
	    //会将多出的1111截掉
	    raFile.setLength(36);
	    System.out.println(raFile.getFilePointer());
	    
	    raFile.seek(20);
	    System.out.println(raFile.getFilePointer());
	    
	    raFile.skipBytes(6);
	    System.out.println(raFile.getFilePointer());
	    
	    //skipbytes不会使指针将超过文件长度
	    raFile.skipBytes(20);
        System.out.println(raFile.getFilePointer());
	    
        //seek如果位置超过文件长度,会将文件扩大
        raFile.seek(50);
        System.out.println(raFile.getFilePointer());
        raFile.write(100);
        
        raFile.setLength(36);
        
	}
	
	private static void test2() throws IOException{
	    
	    String filePath = "F:/shanch/temp/a.txt";
        RandomAccessFile raFile = new RandomAccessFile(filePath,"rw");
        
        raFile.seek(10);
        //read读取当前指针的byte 读取之后指针下移一个byte
        System.out.println((char)raFile.read());
        System.out.println(raFile.getFilePointer());
        
        raFile.seek(10);
        raFile.write(0);//替换a 而非插入
        raFile.write(0);//替换b
        raFile.write(0);//替换c
	}
	
	private static void test3() throws IOException, InterruptedException{
	 
	    final String filePath = "F:/shanch/temp/a.txt";
        RandomAccessFile raFile = new RandomAccessFile(filePath,"rw");
        FileChannel fChannel = raFile.getChannel();

        //当文件锁住时,不可修改
//        fChannel.lock();
        //程序退出时会自动释放锁
        
        //position与FilePointer一致
        fChannel.position(10);
        System.out.println(raFile.getFilePointer());
        raFile.seek(20);
        System.out.println(fChannel.position());
        
        //清空文件,从文件头开始,只保留指定字节数 
        fChannel.truncate(50);
        
        fChannel.lock(10, 10, true);
        //FileChannel与RandomAccessFile的写方法是不同的实现
        //FileChannel锁住时,RandomAccessFile将不能写
//        raFile.seek(15); 
//        raFile.write(97); //此处会报异常
        
        Thread.currentThread().sleep(2000);
        new Thread() {
            public void run(){
                try
                {
                    RandomAccessFile raFile = new RandomAccessFile(filePath,"rw");
                    raFile.seek(15);
                    System.out.println((char)raFile.read());
                    raFile.write(26);//另一个程序已锁定文件的一部分,进程无法访问。
//                    raFile.read();
                }
                catch (IOException e1)
                {
                    e1.printStackTrace();
                }
            }
        }.start();
        
	}
}
分享到:
评论

相关推荐

    Java测试题2答案

    《Java测试题2》 <br>一、 选择 1.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的 ? B A ArrayList myList=new Object(); B List myList=new ArrayList(); C ...

    Android实现断点多线程下载

    ②:使用RandomAccessFile类进行读写,可以指定开始写入的位置。③:数据库保存下载信息,下一次继续下载的时候从数据库取出数据,然后从上次下载结束的地方开始。 这里我使用了FinalDb的数据库框架,同时在内存中...

    JAVA流读取中英文字符

    使用RandomAccessFile 流读取hello.txt文件舍弃其前4行 和 后 6行的内容,并将其他行的内容倒置读出。程序尽量做到通用性,可以读取任何一个文件。 可以自己随便创建一个hello.txt文件作为测试用(其中可能包含中文...

    Interface的测试代码,请光临

    // 使用系统提供的默认的恢复策略 getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler()); getMethod.setRequestHeader("X-Up-Calling-Line-ID", ...

    AIC的Java课程1-6章

     [*]知道使用RandomAccessFile类和seek方法随机存取文件。 机动时间和复习 2课时 <br> 考试 4课时  时间:120-150分钟;其余时间可用于答疑。  题目来源: 大纲...

    java初学者必看

    2.2 环境变量的配置与测试 2.2.1 设置环境变量path 2.2.2 设置环境变量classpath 2.2.3 环境变量的测试 2.3 API文档的下载与使用 2.4 第一个应用程序 2.4.1 HelloWorld程序 2.4.2 程序运行编译命令 2.4.3 ...

    Think in Java(中文版)chm格式

    10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 10.4.2 检查与创建目录 10.5 IO流的典型应用 10.5.1 输入流 10.5.2 输出流 10.5.3 快捷文件处理 10.5.4 从标准输入中读取数据 10.5.5 ...

    JAVA_Thinking in Java

    10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 10.4.2 检查与创建目录 10.5 IO流的典型应用 10.5.1 输入流 10.5.2 输出流 10.5.3 快捷文件处理 10.5.4 从标准输入中读取数据 10.5.5 管道数据流 ...

    Java初学者入门教学

    10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 10.4.2 检查与创建目录 10.5 IO流的典型应用 10.5.1 输入流 10.5.2 输出流 10.5.3 快捷文件处理 10.5.4 从标准输入中读取数据 10.5.5 管道数据流 ...

    ThinkInJava

    10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 10.4.2 检查与创建目录 10.5 IO流的典型应用 10.5.1 输入流 10.5.2 输出流 10.5.3 快捷文件处理 10.5.4 从标准输入中读取数据 10.5.5 管道数据流 ...

    java 编程入门思考

    10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 10.4.2 检查与创建目录 10.5 IO流的典型应用 10.5.1 输入流 10.5.2 输出流 10.5.3 快捷文件处理 10.5.4 从标准输入中读取数据 10.5.5 管道数据流 ...

    thinkinjava

    10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 10.4.2 检查与创建目录 10.5 IO流的典型应用 10.5.1 输入流 10.5.2 输出流 10.5.3 快捷文件处理 10.5.4 从标准输入中读取数据 10.5.5 管道数据流 ...

    JAVA基础课程讲义

    测试类的定义方式 57 简单的学生类编写示例 58 内存分析 59 属性(field,或者叫成员变量) 59 引用类型 60 类的方法 60 对象的创建和使用 60 构造器(或者叫做构造方法,constructor) 60 垃圾回收机制(Garbage ...

    Thinking in Java简体中文(全)

    10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 10.4.2 检查与创建目录 10.5 IO流的典型应用 10.5.1 输入流 10.5.2 输出流 10.5.3 快捷文件处理 10.5.4 从标准输入中读取数据 10.5.5 管道数据流 ...

    java联想(中文)

    10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 10.4.2 检查与创建目录 10.5 IO流的典型应用 10.5.1 输入流 10.5.2 输出流 10.5.3 快捷文件处理 10.5.4 从标准输入中读取数据 10.5.5 管道数据流 ...

    Android渠道打包工具packer-ng-plugin.zip

    }读取ZIP文件注释,有两个版本的实现,这里使用的是 RandomAccessFile ,另一个版本使用的是 MappedByteBuffer ,经过测试,对于特别长的注释,使用内存映射文件读取性能要稍微好一些,对于特别短的注释(比如渠道名...

    Thinking in Java(中文版 由yyc,spirit整理).chm

    10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 10.4.2 检查与创建目录 10.5 IO流的典型应用 10.5.1 输入流 10.5.2 输出流 10.5.3 快捷文件处理 10.5.4 从标准输入中读取数据 10.5.5 管道数据流 ...

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm

    10.3 本身的缺陷:RandomAccessFile 10.4 File类 10.4.1 目录列表器 10.4.2 检查与创建目录 10.5 IO流的典型应用 10.5.1 输入流 10.5.2 输出流 10.5.3 快捷文件处理 10.5.4 从标准输入中读取数据 10.5.5 管道数据流 ...

    面向对象技术与UML课件及源代码-by 南邮-陈杨

    11.5.1用RandomAccessFile类进行文件读写 11.5.2使用Properties类 11.6小结 第12章多线程开发 12.1认识多线程 12.1.1为什么需要多线程 12.1.2继承Thread类开发多线程 12.1.3实现Runnable接口开发多线程 ...

Global site tag (gtag.js) - Google Analytics