我正在计划一个小项目只是为了好玩,所以我不知道我是否会使用C ++或JAVA。所以我要问这两种语言的信息。
现在我将描述情况,可能发生的事情。
假设我有档案C:\Users\T3\My Documents\Downloads\My file.txt
。执行程序流我保存此目录并使用它来获取该文件内容。但是用户可以将该文件移动到其他目录中,让它为C:\Users\T3\My Documents\Files\My file.txt
。现在,如果我使用以前的目录,我将无法访问该文件。但据我所知,文件停留在磁盘的同一位置,我们称之为0x1234567890
。移动文件只会更改文件系统NFTF / ext4 / ...或某些数据中的某些数据。
会出现一两个有问题的情况:
我的问题是如何在磁盘上获取该地址(我称之为0x1234567890
)以及如何从知道该地址的文件中读取数据。
答案 0 :(得分:2)
我将从java的角度讲。 Java自己进行内存管理,永远不会暴露它们,所以你不会得到api来获取文件的内存地址。
虽然有一种方法可以写入特定的内存地址,然后使用sun.misc.Unsafe
类从该地址访问数据。在这篇文章中解释:http://robaustin.wikidot.com/how-to-write-to-direct-memory-locations-in-java
总而言之,从内存地址获取数据的方法会导致麻烦。您应该改变逻辑并查看锁定文件或将文件路径放置在某个集中位置,这将存储已修改的路径。