【问题标题】:How to store files in memory with java?如何用java将文件存储在内存中?
【发布时间】:2020-04-01 11:33:14
【问题描述】:

我正在尝试使用 java 实现一个最小的 FTP 服务器。在这台服务器上,我希望所有文件只存在于内存中。不应在磁盘上写入任何内容。

话虽如此,我必须创建一个虚拟文件系统,由一个根目录、一些子目录和文件组成。其中一些最初会从硬盘加载,然后只会在内存中处理。

我的问题是:有没有一种在 Java 中实现这一点的有效方法?有没有预先实现的东西?我应该使用的类? (我无法访问所有库:java.lang、java.io)

假设没有,我创建了自己的简单文件系统、目录和文件类。但是,我不知道应该如何将实际数据存储在内存中。知道文件可以是图像、文本文件或其他任何可以与 FTP 服务器交换的东西,我应该如何存储它?此外,我应该能够使用两种传输模式:二进制和 ASCII。因此,无论我以何种格式存储数据,我都应该能够将它们转换为某种二进制或 ASCII 格式。

我知道这个问题有点抽象,任何关于我应该看哪里的提示都将不胜感激。

【问题讨论】:

  • 这是作业吗?
  • @MarcoZielbauer 这是更大任务的一部分,是的。我希望这无关紧要
  • 不,这不是无关紧要的。见How do I ask and answer homework questions?
  • 一些提示。文件只不过是一个有名字的字节块。就是这么简单。 ASCII 和 BINARY 模式(在 FTP 上下文中)之间的主要区别在于对行尾的处理。你应该阅读RFC 959: FILE TRANSFER PROTOCOL (FTP)
  • 你不应该让它比它更复杂。为什么不创建一个以文件名和字节数组作为字段的 InMemoryFile 类?您可以使用 ByteArrayInputStream 和 ByteArrayOutputStream 来访问字节缓冲区。为什么你认为使用字节数组效率低下?这里的限制因素是网络通信。

标签: java ftp stream binary ascii


【解决方案1】:

除非写入磁盘,否则数据将在内存中。

假设您将相关数据存储在某些变量中,那么只需不调用任何文件编写器,该变量将保留在 java 的堆栈/堆中,而不存储到文件系统中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-19
    • 2011-10-16
    • 1970-01-01
    • 2020-05-09
    • 2014-09-20
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多