2

我计划一个小项目只是为了好玩,所以我还不知道我会使用 C++ 还是 JAVA。所以我正在询问这两种语言的信息。

现在我将描述情况,可能发生的情况。可以说我有文件C:\Users\T3\My Documents\Downloads\My file.txt。做程序流程我保存这个目录并用它来获取那个文件内容。但是用户可以将该文件移动到其他目录中,让它成为C:\Users\T3\My Documents\Files\My file.txt. 现在,如果我使用以前的目录,我将无法访问该文件。但据我所知,文件位于磁盘中的同一位置,我们称之为0x1234567890. 移动文件只是更改文件系统 NFTF/ext4/... 中的一些数据或一些数据。

会有一两个问题的情况:

  1. 如果文件被移动到其他磁盘。这是不可能达到的。
  2. 如果文件被移动到同一磁盘的其他分区。不确定在这是否可能达到它,但它可能是。

我的问题是如何在磁盘上获取该地址(我称之为0x1234567890)以及如何从知道该地址的文件中读取数据。

4

1 回答 1

2

我将从java的角度来谈谈。Java 自己进行内存管理并且从不公开它们,因此您不会让 api 获取文件的内存地址。

尽管有一种方法可以写入特定的内存地址,然后使用sun.misc.Unsafe类从该地址访问数据。在这篇文章中有解释:http ://robaustin.wikidot.com/how-to-write-to-direct-memory-locations-in-java

总而言之,您从内存地址获取数据的方法会导致麻烦。您应该更改您的逻辑并锁定文件或将文件路径放置在某个集中位置,该位置也将存储修改后的路径。

于 2013-06-30T06:44:03.573 回答