【发布时间】: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