当前位置: 首页 > 面试题库 >

从文件中读取最后一个字节并截断为大小

魏宏邈
2023-03-14
问题内容

我有大量文件,所有文件都(应该)是在文件末尾附加一个前哨字符(1个字节)。如何读取最后一个字节(以确保它是字符)并将其截断为大小(即:删除字符)?

我知道我可以阅读整个内容,然后将其写回去减去最后一个字符,但是必须有一种方法可以获取特定的字节,不是吗?


问题答案:

您可以使用RandomAccessFile类查找文件的末尾,读取它,然后使用截断该文件setLength()

更新: 这是一些代码:

File target = new File("/path/to/file");
RandomAccessFile file = new RandomAccessFile(target,"rwd");
file.seek(target.length()-1); // Set the pointer to the end of the file
char c = file.readChar();
if(c == '|') // Change the pipe character to whatever your sentinel character is
{
     file.setLength(target.length()-1); // Strip off the last _byte_, not the last character
}

注意:我尚未测试此代码,没有错误处理等。

如果文件采用任何非8位字符集,target.length()-1则需要对其进行调整。



 类似资料:
  • c是从一个文件中读取并反向打印出数字。向前打印时,我去掉了逗号。但是我不知道如何对后场做同样的事情。 到目前为止,这就是我所拥有的: 向前的部分是正确的:1.00,2.00,3.00,4.00,5.00,6.00,7.00,8.00,9.00,10.00 但倒退是打印出来的 10.00,9.00,8.00,7.00,6.00,5.00,4.00,3.00,2.00,1.00, 我怎么去掉最后一个逗

  • 我正在寻找一种在读取字节(作为字节[])和从文件中读取字符串行之间切换的方法。我知道字节[]可以通过FileInputStream从文件中获取,字符串可以通过BufferedReader获取,但同时使用这两个字节是有问题的。我知道字节段有多长。当我写文件时,字符串编码可以保持不变。该文件类型是一个仍在开发中的自定义文件类型,因此我可以更改向其写入数据的方式。 我怎么能读取字符串和字节[]s从相同的

  • 我有一个巨大的文件(2GB),其中只包含员工编号。我必须阅读此文件,获取员工号码并调用数据库以获取员工的工资,然后将其写入另一个文件中,并将员工姓名和工资作为其行。 现在的问题是,通过直接读取这个巨大的文件通过简单的nio在java我的STS内存溢出或它需要4-5小时来完成整个读-取-写过程。 所以我想用Java并发来拯救我。 为此,我有一个实现Runnable的EmployeeDetails类,

  • 问题内容: 我有一个大文件,需要阅读并制作字典。我希望尽快。但是我在python中的代码太慢了。这是显示问题的最小示例。 首先制作一些假数据 现在,这里是一个最小的python代码片段,可以读入它并制作一个字典。 时间: 但是,可以更快地读取整个文件,如下所示: 我的CPU有8个核心,是否可以在python中并行化此程序以加快速度? 一种可能是读取大块输入,然后在不同的非重叠子块上并行运行8个进程

  • 问题内容: 请看下面的代码 在这里,首先获取文件的字节,然后将其写入文本文件。然后,我阅读了该文本文件,逐行阅读,并为每一行生成了一个单独的.txt文件。现在,原始程序被拆分为数千个文件。现在,我需要阅读所有.txt文件并重新生成.txt文件。我不知道怎么做最后一件事。我怎样才能做到这一点?请帮忙! 问题答案: 如果要操作任何类型的文件,请不要认为它们包含文本数据,而应将它们视为包含字节的二进制文

  • 我正在尝试制作一个十六进制转储应用程序,为此,我需要读取文件字节。我正在使用ApacheIO版本2.8.0来进行十六进制转储。这是我正在使用的代码: 我得到的错误是:我查了一下,没有任何建议尝试如添加和到清单工作。任何帮助都很感激