jjzjj

RandomAccessFile

全部标签

java - 使用Java读取文件的最后n个字节

我有一个记录一些文件的爬虫程序。有时在服务器上,会发生一些错误,爬虫会创建大量无法解析的日志文件。出于这个原因,我想创建一个简单的程序来读取日志文件末尾的大约1000个字符并向我显示消息(即使爬虫仍在写入该文件)。这将帮助我在不关闭爬虫的情况下解决问题。 最佳答案 使用RandomAccessFile至seek,然后read你的字节了。Filefile=newFile("DemoRandomAccessFile.out");RandomAccessFileraf=newRandomAccessFile(file,"r");//See

java - 为什么 RandomAccessFile 类中没有 readUnsignedInt?

我刚刚发现RandomAccessFile类中没有readUnsignedInt()方法。为什么?是否有任何解决方法可以从文件中读取unsignedint?编辑:我想从文件中读取一个unsignedint并将其放入一个long空间。编辑2:不能使用readLong()。它将读取8个字节而不是4个字节。文件中的数据具有4字节范围内的无符号整数。编辑3:在这里找到答案:http://www.petefreitag.com/item/183.cfm编辑4:如果数据文件是小端呢?我们需要先交换位吗? 最佳答案 我会这样做:longl=fil

java - java中的RandomAccessFile是否读取内存中的整个文件?

我需要从一个大文件(比如2GB)中读取最后n行。该文件是UTF-8编码的。想知道最有效的方法。阅读有关Java中的RandomAccessFile的信息,但seek()方法会读取内存中的整个文件。它使用native实现,因此我无法引用源代码。 最佳答案 RandomAccessFile.seek只是设置文件指针的当前位置,没有字节被读入内存。由于您的文件是UTF-8编码的,因此它是一个文本文件。对于读取文本文件,我们通常使用BufferedReader,Java7甚至添加了一个方便的方法File.newBufferedReader来

高效快捷读写文件之 RandomAccessFile 类解说

一、摘要RandomAccessFile类,也被称为随机访问文件类。RandomAccessFile可以说是Java体系中功能最为丰富的文件操作类,相比之前介绍的通过字节流或者字符流接口方式读写文件,RandomAccessFile类可以跳转到文件的任意位置处进行读写数据,而无需把文件从头读到尾,但是该类仅限于操作文件,不能访问其他的IO设备,如网络、内存映像等。所以如果需要访问文件的部分内容,而不是把文件从头读到尾,使用RandomAccessFile将是更好的选择。实际上,虽然RandomAccessFile类具备随机读写数据的功能,但是它既不是InputStream的子类,也不是Outp

java - BufferedReader 与 Java 中的 RandomAccessFile

我正在用java编写一个小应用程序我读取各种大小的文本文件,我需要逐行读取它们(并将该行插入到数组中)。BufferedReader.ReadLine()和RandomAccessFile.ReadLine()在性能方面有区别吗?有什么理由偏爱其中之一吗? 最佳答案 RandomAccessFile.readLine()可能会稍微快一些,因为它忽略了字符编码。但是它不使用缓冲并且仍然使用StringBuffer:P所以它在你的系统上可能会更慢。BufferedReader.readLine()是首选,因为它处理字符编码,例如UTF-

Java中RandomAccessFile用法

 文章目录介绍RandomAccessFile使用创建对象写方法读取方法介绍java.io.RandomAccessFile1、读写文件的工具2、将文件中的字节数据,当作数组,用下标访问指定位置的字节值RandomAccessFile既可以读取文件内容,也可以向文件输出数据。同时,RandomAccessFile支持“随机访问”的方式,程序快可以直接跳转到文件的任意地方来读写数据。由于RandomAccessFile可以自由访问文件的任意位置,所以如果需要访问文件的部分内容,而不是把文件从头读到尾,使用RandomAccessFile将是更好的选择。RandomAccessFile允许自由定义

java - 用于内存字节数组的 RandomAccessFile-like API?

我需要将使用RandomAccessFile的代码替换为使用内存中字节缓冲区的代码(例如byte[]或类似ByteArrayInputStream的派生物)).是否有一些API(字节数组包装器?)具有类似于RandomAccessFile的接口(interface),带有seek()和streamishread()我可以一对一插入? 最佳答案 ByteArrayInputStream可以做到:read()的工作原理相同。seek(n)可以替换为reset()后接skip(n) 关于jav

java - 如何使用 RandomAccessFile 读取 UTF8 编码的文件?

我有一个用UTF8编码的文本文件(用于特定语言的字符)。我需要使用RandomAccessFile来寻找特定的位置并从中读取。我想逐行阅读。Stringstr=myreader.readLine();//returnswrongtext,notdecodedStringstrmyreader.readUTF();//Anexceptionoccurred:java.io.EOFException 最佳答案 您可以使用以下代码将readLine读取的字符串转换为UTF8:publicstaticvoidmain(String[]arg

java - Java中RandomAccessFile的并发

我正在创建一个RandomAccessFile对象以通过多个线程写入文件(在SSD上)。每个线程都尝试在文件中的特定位置写入直接字节缓冲区,我确保线程写入的位置不会与另一个线程重叠:file_.getChannel().write(buffer,position);其中file_是RandomAccessFile的实例,buffer是直接字节缓冲区。对于RandomAccessFile对象,由于我没有使用fallocate分配文件,并且文件的长度在变化,这是否会利用底层媒体的并发性?如果不是,在创建文件时不调用fallocate使用上述函数是否有意义? 最佳

java - 支持 Long 以外的 RandomAccessFile?

我目前正在使用RandomAccessFile的实例来管理一些内存中的数据,但是我的RandomAccessFile实例的大小超过了2^64字节,所以我不能使用seek()和write()等方法,因为它们使用Long并且无法管理大于2^64的地址空间。那我该怎么办?我可以使用其他支持超过2^64的地址空间的东西吗?编辑:问这个问题的原因:我有一个树数据结构,理论上最多可以有2^128个节点,我想将这棵树存储到一个文件中。每个节点都有大约6个字节的数据。所以我想知道如何将这棵树存储到文件中。 最佳答案 不是正确答案,但您确定您的文件实