Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取MacOS文件夹/文件ID C#_C#_Macos_Xamarin - Fatal编程技术网

获取MacOS文件夹/文件ID C#

获取MacOS文件夹/文件ID C#,c#,macos,xamarin,C#,Macos,Xamarin,编辑:我刚读到微软产品在保存时经常删除并创建一个新文件,所以我们可能需要一个与下面完全不同的解决方案 我正在编写一些代码,以便在我的应用程序运行时跟踪Windows和Mac上的文件和文件夹更改,但如果它不运行,它还需要检测更改 我可以在Windows上通过使用以下帖子获取文件夹和文件ID来完成此操作: 现在我需要一个Mac的解决方案,但在搜索之后,我发现有点空。我找不到任何关于系统范围文件夹/文件ID的信息。我找到的最接近解决方案是使用某种书签,可以跟踪文件,如下所述,但我尚未开始: 似乎我

编辑:我刚读到微软产品在保存时经常删除并创建一个新文件,所以我们可能需要一个与下面完全不同的解决方案

我正在编写一些代码,以便在我的应用程序运行时跟踪Windows和Mac上的文件和文件夹更改,但如果它不运行,它还需要检测更改

我可以在Windows上通过使用以下帖子获取文件夹和文件ID来完成此操作:

现在我需要一个Mac的解决方案,但在搜索之后,我发现有点空。我找不到任何关于系统范围文件夹/文件ID的信息。我找到的最接近解决方案是使用某种书签,可以跟踪文件,如下所述,但我尚未开始:

似乎我必须将这些书签存储为别名文件,以便在程序启动时调用


使用C#?

在Mac上获取全局文件/文件夹ID还有其他选项吗?您可以使用
NSFileManager.GetAttributes
获取文件的“inode”(如Jason的评论所示)

注意:当然,如果在卷之间移动索引节点,如果编辑文件的程序执行删除和重新创建操作,或者执行替换操作,等等,索引节点会发生变化

例子:
unix文件系统使用inode来唯一地跟踪文件-不确定是否有用于此的Mac API,但这正是我要搜索的
var ns = NSFileManager.DefaultManager;
var attribs = ns.GetAttributes("/Users/sushi/Desktop/foo.txt");
Console.WriteLine(attribs.SystemFileNumber);
File.Move("/Users/sushi/Desktop/foo.txt", "/Users/sushi/Desktop/foo2.txt");
var attribs2 = ns.GetAttributes("/Users/sushi/Desktop/foo2.txt");
Console.WriteLine(attribs2.SystemFileNumber);