当前位置: 首页 > 知识库问答 >
问题:

如何一次从一个文件中读取n个base64编码字符,然后解码并写入另一个文件?

戚勇
2023-03-14

目前,我有一个源文件,其中包含base64编码的数据(大小约为20MB)。我想从这个文件中读取,解码数据并写入一个。TIF输出文件。然而,我不想一次解码所有20MB的数据。我想从源文件中读取特定数量的字符/字节,解码并写入目标文件。我知道我从源文件读取的数据的大小必须是4的倍数,否则就无法解码?下面是我当前的代码,我一次解码了所有代码

public write Output(File file){
BufferedReader br = new BufferedReader (new Filereader(file));
String builder sb = new StringBuilder ();
String line=BR.readLine();
While(line!=null){
....
//Read line by line and append to sb
}
byte[] decoded = Base64.getMimeDecoder().decode(SB.toString());
File outputFile = new File ("output.tif")
OutputStream out = new BufferedOutputStream(new FileOutputStream(outputFile));
out.write(decoded);
out.flush();

}

如何从源文件中读取特定数量的字符,然后解码并写入输出文件,这样就不必加载内存中的所有内容?

共有1个答案

仉明知
2023-03-14

下面是一个简单的方法来演示如何实现这一点,方法是将Base64解码器包装在输入流周围,并读取到大小合适的字节数组中。

java prettyprint-override">public static void readBase64File(File inputFile, File outputFile, int chunkSize) throws IOException {
    FileInputStream fin = new FileInputStream(inputFile);
    FileOutputStream fout = new FileOutputStream(outputFile);
    InputStream base64Stream = Base64.getMimeDecoder().wrap(fin);
    byte[] chunk = new byte[chunkSize];
    int read;
    while ((read = base64Stream.read(chunk)) != -1) {
        fout.write(chunk, 0, read);
    }
    fin.close();
    fout.close();
}
 类似资料:
  • 问题内容: 我想一次从文件中读取一个数字列表作为一个字符,一次检查一个字符,以检查该字符是什么,是否是数字,句点,+或-,e或E或其他一些字符。 ..然后基于此执行我想要的任何操作。如何使用已有的现有代码执行此操作?这是我尝试过的示例,但是没有用。我是python的新手。提前致谢! 问题答案: 从文件中读取行。以文本块的形式读取整个文件,然后遍历文本的每个字符:

  • 问题内容: 我有一个带有汉字文本的文件,我想将这些文本复制到另一个文件中。但是文件输出混乱了中文字符。注意,在我的代码中,我已经在使用“ UTF8”作为编码了: 问题答案: 在这种情况下,请勿使用FileReader,因为它不允许您指定输入编码。在FileInputStream上构造一个InputStreamReader。 像这样:

  • 我正在尝试转换一个大的文本文件(大小为5 gig),但得到了一个从这篇文章中,我设法将文本文件的编码格式转换为可读的格式: 这里的问题是,当我试图转换一个大尺寸(5 GB)的文本文件时。我会得到这个错误 我知道它无法读取这么大的文件。我从几个链接中发现,我可以逐行阅读。 那么,我如何应用于我必须让它逐行读取的代码呢?我对逐行读取的理解是,我需要从中读取一行,并将其添加到中,直到行尾,对吗?

  • 问题内容: 谁能告诉我该怎么做? 问题答案:

  • 我有从多个文件读取并写入多个文件的Spring批处理配置。是否可以只写入从多个读取的一个文件。假设我收到巨大的XML文件,我将XML拆分为小文件并使用分区器并行读取小文件。但我需要将从不同的小xml文件读取的所有数据写入一个输出文件。Spring批处理是否可以做到这一点?我知道通过使写入器同步是可能的,但我正在寻找任何其他可能的方式作业配置 我得到错误组织。springframework。一批项目

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