百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

Java 创建一个大文件(java创建指定大小的文件)

wptr33 2025-03-19 17:22 20 浏览

有时候,我们在对文件进行测试的时候,可能需要创建一个临时的大文件。

那么问题来了,在 Java 中如何创建大文件呢?

问题和解决

有些人想到的办法就是定义一个随机的字符串,然后重复很多次,然后将这个字符串写入到文件中。

当然,这个是一个解决方法。

我们可以使用下面的代码来进行创建。

    @Test
    public void writingToLargeFile() throws IOException {
        final RandomAccessFile stream = new RandomAccessFile(fileNameLarge, "rw");
        stream.setLength(1024 * 1024 * 1024);
    }

生成的文件的大小为 1 个 G。

RandomAccessFile 实例

此类的实例支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。存在指向该隐含数组的光标或索引,称为文件指针;输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针。

如果随机访问文件以读取/写入模式创建,则输出操作也可用;输出操作从文件指针开始写入字节,并随着对字节的写入而前移此文件指针。写入隐含数组的当前末尾之后的输出操作导致该数组扩展。

该文件指针可以通过 getFilePointer 方法读取,并通过 seek 方法设置。

现有如下的一个需求,向已存在1G数据的 txt 文本里末尾追加一行文字,

可能大多数朋友会觉得这个需求很容易,直接把文件读到内存中,获得文件的字符串,然后在字符串后添加就可以了。

那么,如果我们现在的文件有 10 GB,那怎么办?

如果全部读到内存中,估计大概率情况会内存溢出了。

这个时候可以使用 RandomAccessFile 来进行操作了。

因为 Random 的大意就是针对文件内容的指针你可以随意进行操作,那么对大文件的读取和处理,这个类就是你的好伙伴了。

另外,从 RandomAccessFile 的构造方法,我们就看到,你需要提供的是文件的路径,而不是文件对象。

这个很容易理解吧,如果我们提供的是文件对象的话,那么你的 JVM 将会要对这个对象实例化以后才能操作,这个内存早就可能会出问题了。

有下面的一些参数你可以使用:

  • r: 以只读方式打开文件,如果执行写入操作会抛出IOException;
  • rw: 以读、写方式打开文件,如果文件不存在,则尝试创建文件;
  • rws: 以读、写方式打开文件,要求对文件内容或元数据的每次更新都同步写入底层存储设备;
  • rwd: 以读、写方式打开文件,要求对文件内容的每次更新都同步写入底层存储设备;

相关推荐

什么是Java中的继承?如何实现继承?

什么是继承?...

Java 继承与多态:从基础到实战的深度解析

在面向对象编程(OOP)的三大支柱中,继承与多态是构建灵活、可复用代码的核心。无论是日常开发还是框架设计,这两个概念都扮演着至关重要的角色。本文将从基础概念出发,结合实例与图解,带你彻底搞懂Java...

Java基础教程:Java继承概述_java的继承

继承概述假如我们要定义如下类:学生类,老师类和工人类,分析如下。学生类属性:姓名,年龄行为:吃饭,睡觉老师类属性:姓名,年龄,薪水行为:吃饭,睡觉,教书班主任属性:姓名,年龄,薪水行为:吃饭,睡觉,管...

java4个技巧:从继承和覆盖,到最终的类和方法

日复一日,我们编写的大多数Java只使用了该语言全套功能的一小部分。我们实例化的每个流以及我们在实例变量前面加上的每个@Autowired注解都足以完成我们的大部分目标。然而,有些时候,我们必须求助于...

java:举例说明继承的概念_java继承的理解

在现实生活中,继承一般指的是子女继承父辈的财产。在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。例如猫和狗都属于动物,程序中便可以描述为猫和狗继承自动物,同理,...

从零开始构建一款开源的 Vibe Coding 产品 Week1Day4:业界调研之 Agent 横向对比

前情回顾前面两天我们重点调研了了一下Cursor的原理和Cursor中一个关键的工具edit_file的实现,但是其他CodingAgent也需要稍微摸一下底,看看有没有优秀之处,下...

学会这几个插件,让你的Notepad++使用起来更丝滑

搞程序开发的小伙伴相信对Notepad++都不会陌生,是一个占用空间少、打开启动快的文件编辑器,很多程序员喜欢使用Notepad++进行纯文本编辑或者脚本开发,但是Notepad++的功能绝不止于此,...

将 node_modules 目录放入 Git 仓库的优点

推荐一篇文章Whyyoushouldcheck-inyournodedependencies[1]...

再度加码AI编程,腾讯发布AI CLI并宣布CodeBuddy IDE开启公测

“再熬一年,90%的程序员可能再也用不着写for循环。”凌晨两点半,王工还在公司敲键盘。他手里那份需求文档写了足足六页,产品经理反复改了三次。放在过去,光数据库建表、接口对接、单元测试就得写两三天。现...

git 如何查看stash的内容_git查看ssh key

1.查看Stash列表首先,使用gitstashlist查看所有已保存的stash:...

6万星+ Git命令懒人必备!lazygit 终端UI神器,效率翻倍超顺手!

项目概览lazygit是一个基于终端的Git命令可视化工具,通过简易的TUI(文本用户界面)提升Git操作效率。开发者无需记忆复杂命令,即可完成分支管理、提交、合并等操作。...

《Gemini CLI 实战系列》(一)Gemini CLI 入门:AI 上命令行的第一步

谷歌的Gemini模型最近热度很高,而它的...

deepin IDE新版发布:支持玲珑构建、增强AI智能化

IT之家8月7日消息,深度操作系统官方公众号昨日(8月6日)发布博文,更新推出新版deepin集成开发环境(IDE),重点支持玲珑构建。支持玲珑构建deepinIDE在本次重磅更...

狂揽82.7k的star,这款开源可视化神器,轻松创建流程图和图表

再不用Mermaid,你的技术文档可能已经在悄悄“腐烂”——图表版本对不上、同事改完没同步、评审会上被一句“这图哪来的”问得哑口无言。这不是危言耸听。GitHub2025年开发者报告显示,63%的新仓...

《Gemini CLI 实战系列》(五)打造专属命令行工具箱

在前几篇文章中,我们介绍了GeminiCLI的基础用法、效率提升、文件处理和与外部工具结合。今天我们进入第五篇...