网上流传的继承RandomAccessFile缓冲办法并不可靠

简介: 网上流传的继承RandomAccessFile缓冲办法并不可靠

 最近一段时间,试图对RandomAccessFile进行缓冲,期间出了不少问题。最早吾是从网上搜索,看看有没有现成的代码。找到了现在的代码,用了一下都出错了。


   出错了怎么办?自己写。自己写,就先研究了一下RandomAccessFile,然后就认定,使用继承一定是不行的。为什么呢?看以下代码:

    public native long length() throws IOException;
    public native void setLength(long newLength) throws IOException;

  final表示本函数无法重载。如果从RandomAccessFile继承,一旦调用这个函数,那么缓冲关系就错乱了,结果就会一团糟。

 

  怎么解决这个问题?

  • 另外提供一个函数,并明确要求不得调用seek()之类的函数。这个最好使用工具检查。
  • 封闭,保存一个RandomAccessFile引用。这样实现同名函数,然后调用RandomAccessFile的对应函数。
  • 修改JDK,去掉final,允许继承。


  目前看,第一种方式最佳,最简单。

目录
相关文章
|
7月前
|
Java
揭秘Java文件操作背后的惊天秘密:读写、复制、删除一网打尽!
【6月更文挑战第27天】Java文件操作涵盖读、写、复制和删除。例如,读文件使用`BufferedReader`和`FileReader`;写文件利用`BufferedWriter`和`FileWriter`;复制文件通过读写流实现;删除文件则依赖`Files.delete()`。以上代码示例展示了具体实现。
43 5
|
7月前
|
Java API
惊呆了!Java文件操作竟能如此简单:一分钟学会读写、复制、删除!
【6月更文挑战第27天】Java编程中的文件操作简单易行。使用`java.io`包中的`FileInputStream`和`FileOutputStream`进行读写,例如写文件将字符串转为字节写入,读文件则循环读取字节。文件复制涉及两个流,从源文件读取后写入目标文件。删除文件只需调用`File`对象的`delete`方法。这些基本操作让Java文件处理变得直观且易于掌握。
49 1
|
7月前
|
网络协议
一篇文章讲明白IO流实现写入规定的acci码值
一篇文章讲明白IO流实现写入规定的acci码值
35 0
|
存储 移动开发 Java
Java的第十四篇文章——文件和IO流(后期再学一遍)
Java的第十四篇文章——文件和IO流(后期再学一遍)
|
人工智能 文字识别 小程序
分享几个不为人知,但特别实用的工具类网站!
今天给大家推荐几个不为人知,但是无论是工作中还是生活中都特别实用的工具类网站
165 0
|
C++
爱上c++的第十二天:文件流的概念(详细版本)
c++的程序运行是要以类对象为操作单位的,要以磁盘文件为对象进行输入输出时,必须定义一个文件流的对象,通过文件流对象将数据从内存输出到磁盘文件,或者通过文件流对象从磁盘文件将数据输入到内存。
134 0
|
编解码 Linux Python
来自实践中的教训,有时候纯ffmpeg命令并不好使,还得需要ffmpy包装器
您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦。 本文是ffmpeg使用的第二篇文章,主要是关于ffmpy的使用。 干货满满,建议收藏,需要用到时常看看。 小伙伴们如有问题及需要,欢迎踊跃留言哦~ ~ ~。
263 0
|
数据采集 Linux Python
再谈文件读写:判断文件的几种方法及其优劣对比
学习是循序渐进的过程,若能建立知识点间的联系,进行系统性的学习,那将更有助于效果。阅读这篇文章,你将读到如下内容: 1、判断文件的方法(try语句、os模块、pathlib模块)2、以上几种方法的优劣对比
196 0
|
IDE Java 中间件
521我发誓读完本文,再也不会担心Spring配置类问题了(上)
521我发誓读完本文,再也不会担心Spring配置类问题了(上)
521我发誓读完本文,再也不会担心Spring配置类问题了(上)