相关疑难解决方法(0)

如何比较C#中的(目录)路径?

如果我有两个DirectoryInfo对象,我如何比较它们的语义相等?例如,以下路径应全部视为等于C:\temp:

  • C:\temp
  • C:\temp\
  • C:\temp\.
  • C:\temp\x\..\..\temp\.

以下可能等于或不等于C:\temp:

  • \temp 如果当前工作目录在驱动器上 C:\
  • temp 如果当前工作目录是 C:\
  • C:\temp.
  • C:\temp...\

如果考虑当前的工作目录很重要,我可以自己解决这个问题,所以这并不重要.尾随点在窗口中被剥离,因此这些路径确实应该相等 - 但它们不会在unix中被剥离,所以在mono下我会期望其他结果.

区分大小写是可选的.路径可能存在也可能不存在,用户可能拥有或可能没有路径权限 - 我更喜欢快速健壮的方法,不需要任何I/O(所以没有权限检查),但是如果有什么内置的话 - 我对任何"足够好"的东西都很满意......

.net c# filesystems path

70
推荐指数
5
解决办法
4万
查看次数

使用C#更好地搜索所有文件中的字符串

在参考了很多博客和文章之后,我已经达到了以下代码,用于在文件夹内的所有文件中搜索字符串.它在我的测试中运行良好.

质询

  1. 有没有更快的方法(使用C#)?
  2. 是否有任何方案会因此代码而失败?

注意:我测试了非常小的文件.文件数量也很少.

static void Main()
    {
        string sourceFolder = @"C:\Test";
        string searchWord = ".class1";

        List<string> allFiles = new List<string>();
        AddFileNamesToList(sourceFolder, allFiles);
        foreach (string fileName in allFiles)
        {
            string contents = File.ReadAllText(fileName);
            if (contents.Contains(searchWord))
            {
                Console.WriteLine(fileName);
            }
        }

        Console.WriteLine(" ");
        System.Console.ReadKey();
    }

    public static void AddFileNamesToList(string sourceDir, List<string> allFiles)
    {

            string[] fileEntries = Directory.GetFiles(sourceDir);
            foreach (string fileName in fileEntries)
            {
                allFiles.Add(fileName);
            }

            //Recursion    
            string[] subdirectoryEntries = Directory.GetDirectories(sourceDir);
            foreach (string item in subdirectoryEntries)
            {
                // Avoid "reparse points" …
Run Code Online (Sandbox Code Playgroud)

.net c# file-io

28
推荐指数
2
解决办法
4万
查看次数

检查文件是真实的还是符号链接

有没有办法告诉使用C#文件是真实的还是符号链接?

我已经通过MSDN W32文档(http://msdn.microsoft.com/en-us/library/aa364232(VS.85).aspx)进行了挖掘,并且找不到任何可用于检查的内容.我从这里使用CreateSymbolicLink,它工作正常.

c# symlink

27
推荐指数
4
解决办法
2万
查看次数

如何在Windows 7中以编程方式区分硬链接和真实文件?

我在文件大小和已用磁盘空间之间存在差异(总文件大小甚至超过磁盘大小).我想因为在Windows 7/Vista中存在许多硬链接(对于WinSxS组件).但是,如何以编程方式将硬链接与Windows 7中的真实文件区分开来?

c++ hardlink windows-7

3
推荐指数
1
解决办法
3544
查看次数

标签 统计

c# ×3

.net ×2

c++ ×1

file-io ×1

filesystems ×1

hardlink ×1

path ×1

symlink ×1

windows-7 ×1