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

把数据从一个文件复制到另一个文件在Android很慢?

王俊楚
2023-03-14

我正在将数据从一个文件复制到另一个文件。

这需要更多的时间。原因是什么?

我的代码在这里

    public void copyData( InputStream in, OutputStream out ) throws IOException
    {
        try
        {
            in = new CipherInputStream( in, dcipher );
            int numRead = 0;
            byte[] buf = new byte[512];
            while ( ( numRead = in.read( buf ) ) >= 0 )
            {
                out.write( buf, 0, numRead );
            }
            out.close();
            in.close();
        }
        catch ( java.io.IOException e )
        {
        }
    }

null

共有1个答案

蔡弘扬
2023-03-14

请检查代码,我所做的是增加缓冲区大小和刷新数据,只要它触及1 MB,这样你就不会遇到内存不足的错误。

原因主要是由于缓冲区太小,在写入小字节的信息时需要时间。最好一次放一大块。

您可以根据需要修改这些值。

public void copyData( InputStream in, OutputStream out ) throws IOException
{
    try
    {
        int numRead = 0;
        byte[] buf = new byte[102400];
        long total = 0;
        while ( ( numRead = in.read( buf ) ) >= 0 )
        {
            total += numRead;
            out.write( buf, 0, numRead );

            //flush after 1MB, so as heap memory doesn't fall short
            if (total > 1024 * 1024) 
             { 
                total = 0;
                out.flush();
             }
        }
        out.close();
        in.close();
    }
    catch ( java.io.IOException e )
    {
    }
}
 类似资料:
  • 我们正在努力从Maven迁移到Gradle。不幸的是,我们还有几个战争复盖物要处理。

  • 本文向大家介绍linux把一个文件的内容复制到另一个文件的末尾,包括了linux把一个文件的内容复制到另一个文件的末尾的使用技巧和注意事项,需要的朋友参考一下 问题描述: 比如11的文件内容是: hello 22的文件内容是: world 将22的文件内容复制到11文件的末尾,11文件的效果就是: hello world 解决办法: cat 22 >> 11 >>的意思是追加的意思 > 的意思是重

  • 问题内容: 我想将某些文本行从一个文本文件复制到另一个文件。在我当前的脚本中,当我搜索字符串时,它会随后复制所有内容,如何只复制文本的特定部分?例如,仅在其中包含“ tests / file / myword”的情况下才复制行? 当前代码: 问题答案: 单线: 推荐搭配: 使用更少的内存:

  • 我必须将ant项目转换为gradle项目。在这里,当我运行gradle构建时,它创建了war文件,当它部署在服务器上时,分解的war文件夹有两个文件夹META-INF和WEB-INF,我的要求是1。将web.xml从图像中看到的config文件夹复制到WEB-INF文件夹,并将图像中看到的jsp文件夹复制到分解文件夹

  • //我得到的错误是java。尼奥。文件FileAlreadyExistsException所以据我所知,它试图将文件保存到确切的位置,而不是保存在文件中,如果我将目标地址改为“垃圾/垃圾”,我需要以这种方式保存几个文本文件。它将在那里保存一个名为垃圾的文件。txt。但在for-each的下一个循环中,它会抛出一个“已经存在”的异常。。。 有人能解释一下我如何从src文件夹将所有txt文件保存到该文