在C#程序中访问linux文件系统

时间:2010-07-29 07:57:11

标签: c# linux filesystems interop

我正在编写一个C#应用程序,它检查上次在3个不同的服务器上修改文件,其中一个是linux。作为一个不同的文件系统,有什么方法可以检查上次在系统上修改所述文件的时间。

我可以完全修改服务器,但我正在寻找一些创造性的解决方案来解决这个问题。

提前致谢

3 个答案:

答案 0 :(得分:2)

您可以使用System.IO.File类静态方法获取所需信息:

    DateTime written = File.GetLastWriteTime(fileName);
    DateTime accessed = File.GetLastAccessTime(fileName);
    DateTime created = File.GetCreationTime(fileName); 

这应该适用于您的Linux服务器通过samba共享的文件。你也可以在linux机器上用mono运行这个.Net代码 - 但似乎并非所有linux文件系统support all of the above methods properly

<强>更新

您可以使用ftp并轮询而不是网络共享。要访问提交的日期时间,您可以send使用WebRequestMethods.Ftp.GetDateTimestamp向服务器发送ftp-webrequest。

但也许我的要求是错误的:你需要在3台机器上检查一台机器上的文件吗?或者这三台机器是否应该相互独立地检查他们的文件?结果是否意味着由一个“服务”收集?或者结果只与文件所属的一台机器相关?

答案 1 :(得分:1)

最简单的事情,如果您的应用程序将在Windows机器上运行,则在Linux机器上运行并配置SAMBA并使用它来使用SMB公开网络共享的linux文件夹。

这将允许您以与访问任何其他Windows网络共享相同的方式访问linux文件夹。

其他选项是在linux盒子上使用NFS并使用NFS客户端(参见this SO问题),或直接在linux盒子上试用mono。

答案 2 :(得分:0)

对于Linux,最明显的解决方案是SFTP。大多数Linux发行版都默认内置并运行SSH / SFTP服务器。现在,SFTP协议为目录提供了标准列表格式,以便您可以在那里获取列表和读取文件的时间。