本身的缺陷:RandomAccessFile

RandomAccessFile用于包含了已知长度记录的文件,以便我们能用seek()从一条记录移至另一条;然后读取或修改那些记录。各记录的长度并不一定相同;只要知道它们有多大以及置于文件何处即可。
首先,我们有点难以相信RandomAccessFile不属于InputStream或者OutputStream分层结构的一部分。除了恰巧实现了DataInput以及DataOutput(这两者亦由DataInputStream和DataOutputStream实现)接口之外,它们与那些分层结构并无什么关系。它甚至没有用到现有InputStream或OutputStream类的功能——采用的是一个完全不相干的类。该类属于全新的设计,含有自己的全部(大多数为固有)方法。之所以要这样做,是因为RandomAccessFile拥有与其他IO类型完全不同的行为,因为我们可在一个文件里向前或向后移动。不管在哪种情况下,它都是独立运作的,作为Object的一个“直接继承人”使用。
从根本上说,RandomAccessFile类似DataInputStream和DataOutputStream的联合使用。其中,getFilePointer()用于了解当前在文件的什么地方,seek()用于移至文件内的一个新地点,而length()用于判断文件的最大长度。此外,构建器要求使用另一个自变量(与C的fopen()完全一样),指出自己只是随机读("r"),还是读写兼施("rw")。这里没有提供对“只写文件”的支持。也就是说,假如是从DataInputStream继承的,那么RandomAccessFile也有可能能很好地工作。
还有更难对付的。很容易想象我们有时要在其他类型的数据流中搜索,比如一个ByteArrayInputStream,但搜索方法只有RandomAccessFile才会提供。而后者只能针对文件才能操作,不能针对数据流操作。此时,BufferedInputStream确实允许我们标记一个位置(使用mark(),它的值容纳于单个内部变量中),并用reset()重设那个位置。但这些做法都存在限制,并不是特别有用。

时间: 2025-01-21 12:16:16

本身的缺陷:RandomAccessFile的相关文章

央视曝三星手机存设计缺陷 维修漫天要价

[三星Note.S系列存重大设计缺陷:一天死机三十次]从"突然死机"到"无法开机"再到高价维修,已经成为众多三星手机NOTE系列及S系列机主的共同烦恼.<经济半小时>记者采访专家指出:这是因为,三星产品设计本身存在缺陷,很可能是存储芯片的擦除指令存在着问题,这个存储芯片相当于电脑硬盘.而就是这样的硬件设计问题,却让消费者买单,一次维修少则800块,多则2000块-- 智能机频频变"砖头"原因成谜,维修漫天要价消费者叫苦不迭 2012年

央视曝光三星手机存设计缺陷 修1次可高达2000元

三星手机存设计缺陷 维修漫天要价欺瞒消费者[三星Note.S系列存重大设计缺陷:一天死机三十次]从"突然死机"到"无法开机"再到高价维修,已经成为众多三星手机NOTE系列及S系列机主的共同烦恼.<经济半小时>记者采访专家指出:这是因为,三星产品设计本身存在缺陷,很可能是存储芯片的擦除指令存在着问题,这个存储芯片相当于电脑硬盘.而就是这样的硬件设计问题,却让消费者买单,一次维修少则800块,多则2000块--智能机频频变"砖头"原因成谜

网友吐槽和小米的策略缺陷

1月3日,雷军在新浪微博宣布,红米手机移动版仅需699,随后又转发了http://www.aliyun.com/zixun/aggregation/36757.html">小米公司官方微博"2013年12月31日之后购买红米移动版的用户,可免费领取100元现金券!". 两条微博引来众多网友吐槽. 一.吐槽关键词:雷大忽悠有价无货 期货营销 买不到 以下吐槽来自新浪微博网友. Super阿拉丁:雷大忽悠,为何998的红米想买就有货!你官网价的却没听说有买到的?哎,不是咱不

SQL预编译和SQL注入

再说SQL预编译: 最近用go语言时,学习了一下数据库连接的库,这里总结一下SQL预编译相关的知识.貌似网上都是建议使用预编译,我也觉得这种做法靠谱. 先谈 SQL注入: SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过让原SQL改变了语义,达到欺骗服务器执行恶意的SQL命令.其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统. 其实,反过来考虑,这也是SQL这类解释性语言本身的缺陷,安全和易用性总是相对的.类似的Sh

利用PS抽出滤镜及描边路径精细抠出人物发丝

图片发丝部分本身有点缺陷,即使完整抠出后也会不光滑.这时候就需要自己手工制作一些发丝,来填补发丝的缺陷. 原图 <点小图查看大图> 最终效果 1.打开素材图片,按Ctrl + J 把背景图层复制一层,得到"图层1",点击红圈处新建图层2,放于图层1和背景层之间,填充自己喜欢的颜色作为检查效果及新的背景图层,也可以直接加入自己喜欢的新背景图片. 2.在图层1里执行:滤镜 > 抽出. 3.用高光器工具按图示涂抹滤色,画笔大小5,用填充工具在中间部分填充蓝色. 4.人物的主

电脑开机蓝屏,电脑蓝屏解决方法

一.蓝屏含义 1.故障检查信息 ***STOP 0x0000001E(0xC0000005,0xFDE38AF9,0x0000001,0x7E8B0EB4) KMODE_EXCEPTION_NOT_HANDLED ***其中错误的第一部分是停机码(Stop Code)也就是STOP 0x0000001E, 用于识别已发生错误的类型, 错误第二部分是被括号括起来的四个数字集, 表示随机的开发人员定义的参数(这个参数对于普通用户根本无法理解, 只有驱动程序编写者或者微软操作系统的开发人员才懂). 第

FACEBOOK产品总监:聊聊资深设计师经历过的瓶颈期

  打磨一个成熟的产品和设计一个全新的项目,你选哪个?今天Facebook总监的这篇好文说出了不少设计师的心声,为一个存在了5年以上的复杂产品做改进优化,难度非常非常大,特别当你要考虑到留存率.转化率等等,着实不易,推荐给有类似经历的设计师. @C7210 :眼下这一篇仍是来自于Julie Zhuo,让我想到过去这一年多的时间里自己所处的各种产品项目环境,其中一些前后左右都是制约.让你觉得寸步难行,另一些则看上去是一片全新的自由天地可以任意驰骋的那样.面对这两类产品项目,自己作为设计师,心态上的

XML:电子商务的春天

xml|电子商务 凡是浏览过网页的人,想必都知道HTML.正是HTML的出现,才会有Internet丰富多彩的今天. HTML江郎才尽,电子商务呼唤春天 HTML(Hyper Text Markup Language,超文本语言)是W3C公司开发的Web语言.由于HTML简单易用,而且使用成本低,所以很快就受到人们的关注,并成为Internet上的标准Web语言,一直延用至今. HTML的受重用程度在当时的Internet来说是可以理解的.因为当时的电脑技术较低,浏览器根本不可能解释更为复杂的W

ASP实现不存在的网页就自动发送邮件

我们在制作网站的时候,通常会有当访客的一些错误操作或我们网站本身的缺陷,造成某个不存在的页面被访问,这时会出现404错误提示信息,如果是热心的访客可能会给你发一封邮件提示你,当时大部分时候是访客不会给我们发邮件的.今天给大家介绍的这个程序是当我们的网站出现404错误提示时自动发送一封邮件给我们,代码如下: 以下为引用的内容:<% @language="vbscript" %><% Option Explicit %><%    Dim strPage, s