读取 12 MB 的大文件时出现问题 (java.lang.OutOfMemoryError)

2024-06-28

我需要打开一个 12 MB 的文件,但实际上我正在创建一个 12834566 字节的缓冲区,因为文件的大小是 12MB,而且我正在为 Android 移动系统开发这个应用程序。

然后,我想我必须用 for 读取 1024 KB 的块而不是 12 MB 的块,但我不知道该怎么做,我需要一点帮助。

这是我的实际代码:

File f = new File(getCacheDir()+"/berlin.mp3");
        if (!f.exists()) try {
          InputStream is = getAssets().open("berlin.mp3");
          int size = is.available();
          byte[] buffer = new byte[size];
          is.read(buffer);
          is.close();
          FileOutputStream fos = new FileOutputStream(f);
          fos.write(buffer);
          fos.close();
        } catch (Exception e) { throw new RuntimeException(e); }

请问,有人可以告诉我必须在这段代码中更改什么才能读取 1024 KB 的块而不是 12 MB 的块吗?

THanks!


尝试一次复制 1 KB。

File f = new File(getCacheDir()+"/berlin.mp3");
if (!f.exists()) try {
     byte[] buffer = new byte[1024];
     InputStream is = getAssets().open("berlin.mp3");
     FileOutputStream fos = new FileOutputStream(f);
     int len;
     while((len = is.read(buffer)) > 0) 
        fos.write(buffer, 0, len);
} catch (Exception e) { 
     throw new RuntimeException(e); 
} finally {
     IOUtils.close(is); // utility to close the stream properly.
     IOUtils.close(fos);
}

Android 是否像 UNIX 一样支持符号链接或手动链接?如果是的话,这会更快/更有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

读取 12 MB 的大文件时出现问题 (java.lang.OutOfMemoryError) 的相关文章

  • Java 中的简单 Kerberos 客户端?

    Google Chrome 和 IE 等应用程序可以透明地处理 Kerberos 身份验证 但是我找不到一个 简单 的 Java 解决方案来匹配这种透明度 我发现的所有解决方案都需要存在 krb5 conf 文件和 login conf 文
  • 如何重写 Lombok Setter 方法

    我在我的项目和生成中使用 lombokSetters and Getters using Setters and GettersPOJO 类之上的注释 我正在尝试覆盖属性的 setters 方法 但它不起作用 我想检查 JSON 属性是 E
  • JDK:如何以编程方式启用 PlatformLogger

    我需要以编程方式启用某些 JDK7 内部类的日志记录 这就是我在应用程序初始化时所做的事情 httpLogger Logger getLogger sun net www protocol http HttpURLConnection ht
  • 如何使用鼠标指针和键盘快捷键捕获文本?

    我想使用 C 或 java 使用鼠标指针和键盘快捷键从打开的窗口捕获文本 喜欢babylon http babylon com 所以 我需要知道什么以及如何实施 我需要使用哪些库 或者我可以使用 winapi 吗 使用脚本语言创建您想要执行
  • 将一串数字转换为数组

    我在创建将数字字符串转换为数组的程序时遇到问题 我知道这里有一个类似的问题 但我所要做的只是一组数字 例如 10 15 16 0 57 438 57 18 这是我到目前为止所拥有的 import java util Scanner publ
  • Java中无法到达的语句编译错误[重复]

    这个问题在这里已经有答案了 class For1 public static void main String args int a 0 for break System out println a Line 1 a Line 2 我知道第
  • 为什么我们要在invokeAll方法之后调用join?

    我正在尝试了解 ForkJoinPool 框架并遇到以下示例 public class ArrayCounter extends RecursiveTask
  • 如何设置两种不同的格式样式并将它们映射到 Eclipse 中的不同快捷方式

    每次在 Eclipse 中打开文件时 我都想将源代码格式化为 Allman 风格的缩进 每次保存时 它都应该格式化为办公室中指定的样式 我可以手动执行此操作并有两个热键 Ctrl Alt PgUp 我的方式 Ctrl Alt Page Do
  • 如果没有发生触摸事件,Android SurfaceView 会变慢

    我正在制作一款游戏 除了游戏循环之外一切都很顺利 我正在使用 SurfaceView 并绘制 2D Sprites 位图 目前游戏是一艘穿过小行星带的飞船 飞船停留在屏幕中央 手机向任一方向倾斜以移动小行星 小行星改变位置而不是玩家 当旧的
  • Java 打印 PDF 并带有选项(装订、双面打印等)

    我有一个打印 PDF 的 java 程序 它使用 Apache PDFBox 创建PDDocument对象 来自 pdf 文档或某些情况下来自流 然后使用javax print API private boolean print File
  • 查找 Maven 使用的 Java 选项

    如何找到 Maven 正在使用哪些 Java 选项 Xmx Xms Xss 等 我发现有一种方法set它们是通过环境 MAVEN OPTS 实现的 现在我想要一种方法来确保它获得正确的设置 编辑 我相信它有所不同这个问题 https sta
  • 按下 JButton 时运行函数

    我正在尝试用java编写一个程序 使用机器人每隔几秒按一次特定的键 它有一个带有开始和停止按钮的 GUI 以及一个告诉其处于哪个状态的标签 到目前为止 我已经完成了所有工作 除了当我单击 开始 时 它运行我的机器人功能的循环 这是无限的 没
  • 当不读取带有 URL 的 QR 码时,zxing QRCodeReader 中出现 ChecksumException

    如果我扫描带有 URL 的 QR 码 以下代码可以完美且快速地运行 然而 如果我用简单的字符串或数字序列解码 QR 码 这就是我想要做的 它有时会随机工作 但 99 的情况下它会失败并出现 ChecksumException if webc
  • 使用 ThreadCount TestNG 限制并行测试的数量

    我在这里很头疼 我不知道如何处理这个问题 我有几个通过 xml 运行的测试类 约90个测试班 每个班约10 Test进入其中 我配置了一个硒网格 带有maxSession 5因此 单个节点上最多可以并行运行 5 个并行浏览器实例 这是我不明
  • 从批处理文件运行 .jar

    我已经创建了一个可执行文件 jar文件 我怎样才能执行 jar使用批处理文件而不提及类路径 在 Windows 上 您可以使用以下命令 start javaw jar JarFile jar 通过这样做 命令提示符窗口不会保持打开状态
  • 使用 Jackson 反序列化非字符串映射键

    我有一张如下所示的地图 public class VerbResult JsonProperty similarVerbs private Map
  • 您可以链接两个 JFormattedTextField 的值吗?

    我有一个带有 2 个 JFormattedTextFields 的界面 我需要它们的值 不仅仅是显示的文本 相同 理想情况下 它们都应该是可编辑的 其中一个的更改会反映在另一个中 我一开始只是在两者之间共享一个文档 但很快就遇到了一个问题
  • 在 Clojure 中跟踪文件?

    在 Clojure 中跟踪文件的最佳方法是什么 我还没有遇到任何实用程序可以帮助做到这一点 但关于如何构建一个实用程序的想法将不胜感激 Thanks As kotarak说明 你可以使用随机存取文件寻找文件末尾 不幸的是 你必须忙着等待 睡
  • BufferedReader 跳过第二行

    从 CSV 读取数据时 它会每隔两行跳过一次 我有两个 CSV 文件 一个用于用户 一个用于属性 密钥 ID 是用户 String userName static String breakLine n n Method to create
  • 如何为所有测试初始化​​一次 Spring applicationContext

    我有一组基于需要 spring 上下文的测试 为了快速执行测试 我想确保 Spring 上下文仅初始化一次 然后所有测试都应该针对该上下文运行 然后应该关闭 我已经尝试过以下方法 Use RunWith SpringJUnit4ClassR

随机推荐

  • 如何处理node.js中的for循环?

    我在 node js 中有以下代码 var months jan feb march april may june july august sep oct nov dec for var i 0 j months length i
  • 捕获播放视频的屏幕截图并邮寄该屏幕截图

    我正在播放视频 我需要捕获视频屏幕截图 在我需要邮寄后分享它 请向我提供任何链接的示例 谢谢 昌杜 如果您不想以编程方式执行此操作 只需使用 eclipse 并转到 DDMS 然后使用屏幕捕获 这可能对您有用 http www howtof
  • PHP/Apache 内的 Inkscape 不会将字体渲染为 PNG

    今天发现的一个问题和这个类似未解答的问题 https stackoverflow com questions 7827445 processstartinfo with inkscape on iis is not using any fo
  • 如何列出 scikit-learn 中的所有分类/回归/聚类算法?

    类比于如何列出所有支持 Predict proba 的 scikit learn 分类器 https stackoverflow com questions 30056331 how to list all scikit learn cla
  • 除了主 ELF 可执行文件之外,如何从命令行预加载 gem5 中给定原始字节的内存?

    当模拟开始时 在执行任何指令之前 我需要立即以给定的方式设置内存 我知道这本质上是 ELF 加载程序加载主要可执行文件的操作 但试图通过fs py kernel多次似乎没有效果 我可以尝试使用链接器脚本将该数据破解到我的邮件 ELF 可执行
  • 如何突出显示网格控件的边框线

    我编写了一些代码 以便将 100 x 100 个单元格添加到网格中 问题是我想突出显示分割网格的行 列的线 我应该使用什么属性 或者我应该如何做 下面是创建网格单元的代码 public partial class MainWindow Wi
  • 接口只是“语法糖”吗?

    我主要使用 PHP 和 Python 我一直在阅读有关面向对象编程中的接口的内容 但看不出使用它的优势 多个对象可以实现相同的接口 但是多重继承不提供这一点吗 如果我可以检查 Python 中继承自多个类的对象中是否存在方法 为什么我需要创
  • VCS 和 SCM 有什么区别?

    我正在实践中对版本控制进行一些研究 在书籍和论文中似乎对同一事物有两个名称 软件配置管理 SCM 和版本控制系统 VCS 前者似乎很受软件工程师 Java 程序员的欢迎 而后者则受到系统管理员的欢迎 但在外行人看来 两者似乎意味着同一件事
  • 三个js中的场景旋转问题

    我尝试动态地旋转有孩子的场景 一切工作正常 但是当我平移相机并旋转场景时 轨道控制的枢轴点会损坏并且平移无法正常工作 主要思想是创造围绕物体旋转的 hdr 幻觉 抱歉我的英语不好 这真的很难描述 希望你能理解我的想法 这是一个小代码笔exa
  • macOS High Sierra 与 CAShapeLayers、NSImageView、NSTableView 冲突

    我已经更新到 macOS High Sierra 现在我的项目出现了意想不到的问题 这些问题以前在 macOS Sierra 中没有见过 我有自定义 NSImageView 并在其中拖放图像后NSImageView我可以使用在图像顶部绘制矩
  • 覆盖 Woocommerce 子主题不起作用

    从我的子主题覆盖 Woocommerce 文件根本不起作用 我确信一切都是100 正确的 真是令人沮丧 我正在遵循此页面视频中的每一步 https docs woocommerce com document template struct
  • C++ unique_ptr 与友元类私有析构函数

    我有这样的安排 class LexedFile friend class Lex private LexedFile class Lex private std map
  • 如何使用 GDB 从多个文件中查找分段错误

    我在面试中被问到如何使用 GDB 调试 C 程序中的分段错误 我告诉他们我们可以用以下命令编译我们的程序 g选项 这样它将调试信息添加到二进制文件中 并且可以读取核心转储文件 但面试官告诉我 如果他有 3 到 4 个文件编译在一起 但其中一
  • 我可以使用 443 以外的其他端口进行 HTTPS/SSL 通信吗?

    443 端口通常用于 HTTPS SSL 但这是我们可以选择 HTTPS SSL 通信的唯一选项吗 如果没有 为什么 端口号并不 神奇 您可以使用 1 65535 之间的任何您喜欢的端口 只有2个条件 服务器和客户端都必须 同意 使用相同的
  • 如何使用 JavaScript 查找字符串中的整数之和

    我使用正则表达式创建了一个函数 然后通过将前一个总计添加到数组中的下一个索引来迭代数组 我的代码不起作用 我的逻辑有问题吗 忽略语法 function sumofArr arr here i create a function that h
  • 在“git revert --continue”期间绕过预提交挂钩

    我当时正在做一个git revert 之前的恢复 这导致了一些合并冲突 解决冲突后 我的预提交挂钩引发了一些代码嗅探器问题 由于这些代码嗅探器通知已在其他地方修复 我想在此时使用绕过预提交挂钩git revert continue no v
  • ngx_http_brotli_filter_module.so" 与 /etc/nginx/nginx.conf:1 中的二进制不兼容

    Using Nginx 1 17 3 and Nginx 1 14 0在两台独立服务器上的 Ubuntu 18 上 两者都显示相同的错误ngx http brotli filter module so is not binary compa
  • cytoscape.js 页面上有多个实例

    我在同一网页上设置两个 cytoscape 实例时遇到问题 我有两个窗口变量 cy 和 cy2 用于不同的图形 它们是功能不同的图表 需要在页面的不同部分可用 我想知道如何正确设置 当我查看页面元素时 未显示的元素的底层画布的宽度和高度被
  • 绝对路径到相对路径(Eclipse、JSP)[重复]

    这个问题在这里已经有答案了 我正在 Eclipse JSP 中制作一个 Web 应用程序 并使用 Tomcat 作为服务器 集成到 Eclipse 中 我必须创建下面的对象并指定配置文件的路径 这个绝对路径效果很好 Store store
  • 读取 12 MB 的大文件时出现问题 (java.lang.OutOfMemoryError)

    我需要打开一个 12 MB 的文件 但实际上我正在创建一个 12834566 字节的缓冲区 因为文件的大小是 12MB 而且我正在为 Android 移动系统开发这个应用程序 然后 我想我必须用 for 读取 1024 KB 的块而不是 1