如果移动了特定文件,如何读取

时间:2013-06-30 06:30:13

标签: java c++ file file-io

我正在计划一个小项目只是为了好玩,所以我不知道我是否会使用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. 如果文件已移至同一磁盘的其他分区。不确定是否有可能达到它但可能是。
  3. 我的问题是如何在磁盘上获取该地址(我称之为0x1234567890)以及如何从知道该地址的文件中读取数据。

1 个答案:

答案 0 :(得分:2)

我将从java的角度讲。 Java自己进行内存管理,永远不会暴露它们,所以你不会得到api来获取文件的内存地址。

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

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