Tag: 随机访问

如何从随机访问文件中删除记录?

我想知道如何从随机访问文件中删除记录。 这是我如何添加到我的RAF,不知道如何删除它:X public void addNewStudent(String name, String formClass, String emailAddress, String country1, String country2, String universityChoice) { try { RandomAccessFile theFile = new RandomAccessFile(“studentData.dat”,”rw”); long records = (theFile.length()+299)/300; //Number of records if(theFile.length()>0) //Check if the file is empty or not { for(long x=0;x<records;x++) { theFile.seek(x*300); String currentName = theFile.readUTF(); if(name.equalsIgnoreCase(currentName)) //Check if student exists in […]

java中的随机访问文件

我有以下字段: 库存控制(16字节记录) 产品ID代码(int – 4字节) 库存数量(int – 4字节) 价格(双 – 8字节) 如何使用上述长度创建固定长度的随机访问文件? 我在网上尝试了一些例子,但是当我尝试访问它时,我得到了EOFexception或随机地址值。 我尝试了一些更多的例子,并且不能很好地理解这个概念。 我正在尝试一个项目,并将尝试探索更多。 这是一些示例数据。 数据中可能存在漏洞, No. in stock中的No. in stock可能为23 == 023 。 Quantity ID. No. In Stock Price ——- ——– —— 1001 476 $28.35 1002 240 $32.56 1003 517 $51.27 1004 284 $23.75 1005 165 $32.25 谢谢您的帮助。

FileInputStream.skip()是否进行搜索?

我想将最后10MB的可能大文件复制到另一个文件中。 理想情况下,我会使用FileInputStream,skip()然后read()。 但是我不确定skip()的性能是否会很糟糕。 skip()通常是使用下面的文件搜索实现的,还是实际读取和丢弃数据? 我知道RandomAccessFile,但我对是否可以使用FileInputStream代替它感兴趣(RandomAccessFile很烦人,因为API是非标准的)。

RandomAccess接口,为什么没有方法?

我正在阅读Collections.shuffle(List)javadoc ,然后看看RandomAccess javadoc : List实现使用的标记接口,表示它们支持快速(通常是恒定时间)随机访问。 […] 我想知道为什么这个接口(如Serializable)没有方法? 这个的设计原因是什么? 即使只有列表“实现”此接口,为什么不将E get()设置为方法呢? 我知道并非每个列表都是随机访问,但如果没有方法,我怎么能使用这个接口呢? 像这样的东西: if(object instanceof RandomAccess){ // should I cast it if no operations can be done? why? } 此外,只有列表可以是RandomAccess? 文件怎么样?

寻求AES-CTR加密输入

由于CipherOutputStream模式下的AES非常适合随机访问,因此我可以说我在AES-CTR模式下使用CipherOutputStream创建了数据源。 下面的库 – 不是我的 – 使用RandomAccessFile ,它允许寻找文件中的特定字节偏移量。 我最初的想法是使用CipherInputStream和一个使用正确参数初始化的Cipher ,但是它的API不会寻求并声明不支持mark和reset 。 我是否错过了可以为我做的这一部分API,我应该查看CTR的IV /块计数器的配置,并使用自定义输入流重新创建它(听起来像针对我self猎枪)或采取我错过的其他方法?

在写入文件时读取文件

我必须读取tomcat日志文件,过了一段时间(例如:一小时)我将再次读取该文件(仅用于新添加的内容),所以我创建了RandomAccessFile来记录我完成的最后一个位置,并使用BufferedReader.readLine()方法。 但是,我发现有时我无法读取整个文件行。 例如,tomcat正在编写以下内容(仅举例): 192.168.0.0 localhost /index.html ….. 在这一刻,当我读到时,我可能会得到结果: 192.168.0 0 localhost /index.html ….. 要么 192.168.0.0 localhost /index.html ….. 也就是说,如果正在编写此行,我的读者会读取不完整的行。 所以我想知道是否有任何想法来决定正在阅读的线路是否已经完成? 这是核心代码: raf = new RandomAccessFile(file, “r”); raf.seek(pos); while ((line = raf.readLine()) != null) { System.out.println(line); } pos = raf.getFilePointer(); raf.close(); 我试过这个(添加contidtion): raf = new RandomAccessFile(file, “r”); raf.seek(pos); while ((line = raf.readLine()) != null) { if(line.chartAt(line.length()-1)==’\n’){ […]

使用RandomAccessFile到达文件中的特定行

是否可以通过RandomAccessFile将光标定位到文件中特定行的开头? 例如,我想在文件中第111行的char 10到20之间更改String。 该文件具有固定长度的记录。 是否可以使用RandomAccessFile将光标直接定位到第111行的开头? 更新: 我使用了以下代码。 但是,它返回null。 行长度为200个字符(如果我没有错,则为200个字节) File f = new File(myFile); RandomAccessFile r = new RandomAccessFile(f,”rw”); r.skipBytes(200 * 99); // linesize * (lineNum – 1) System.out.println(r.readLine()); 我哪里错了?

Java中的文件流

我目前正在使用JOGL (Java OpenGL绑定)开发3D图形应用程序。 简而言之,我有一个巨大的横向二进制文件。 由于它的大小,我必须在运行时流式传输地形块。 因此,我们明确地看到随机访问问题。 我已经完成了第一个(和脏:))实现(也许它是multithreading的),我正在使用一种愚蠢的方法……这是它的初始化: dataInputStream = new DataInputStream(new BufferedInputStream(fileInputStream,4 * 1024); dataInputStream.mark(dataInputStream.available()); 当我需要读取(流)特殊块(我已经知道它在文件中的“偏移量”)时,我正在执行以下操作(对我感到羞耻:)): dataInputStream.reset(); dataInputStream.skipBytes(offset); dataInputStream.read(whatever I need…); 因为我没有经验,这是我能想到的第一件事:)所以,直到现在我已经阅读了3篇有用且非常有趣的文章(我建议你阅读它们,或许如果你对这个主题感兴趣的话) 字节缓冲区和非堆内存 – 格雷戈里先生似乎在Java NIO中识字。 Java技巧:如何快速阅读文件 [http://nadeausoftware.com/articles/2008/02/java_tip_how_read_files_quickly] – 这是一个有趣的基准。 文章:调优Java I / O性能 [http://java.sun.com/developer/technicalArticles/Programming/PerfTuning/] – 简单的Sun建议,但请向下滚动并查看那里的“随机访问”部分; 它们显示了RandomAccessFile(RAF)的简单实现,具有自缓冲改进。 格雷戈里先生在他的文章末尾提供了几个* .java文件。 其中之一是FileChannel + ByteBuffer + Mapping(FBM)和RAF之间的基准测试。 他说,与RAF相比,他在使用FBM时注意到了4倍的加速。 我在以下条件下运行此基准: 偏移量(例如访问位置)是随机生成的(在文件范围内,例如0 – file.length()); 文件大小为220MB; 1 000 000次访问(75%读取和25%写入) 结果令人震惊: […]

缓冲的RandomAccessFile java

RandomAccessFile对于随机访问文件非常慢。 您经常阅读有关在其上实现缓冲层的信息,但无法在线查找执行此操作的代码。 所以我的问题是:你们谁知道这个类的任何开源实现共享指针或共享你自己的实现? 如果这个问题会成为关于这个问题的有用链接和代码的集合,我很确定,很多人都会共享这个问题并且SUN从来没有正确解决这个问题。 请不要引用MemoryMapping,因为文件可能比Integer.MAX_VALUE大。