首页 > 解决方案 > 意外值计数字符串 C# 中的字符

问题描述

试图分析文件名与文件路径中的字符数。

鉴于这allfiles是目录中的所有文件,我得到了一些意想不到的结果。在一种情况下,file.Length.ToString()= 281 而fileName.Length.ToString()= 288。文件名怎么可能包含比完整路径更多的字符?

string[] allfiles = Directory.GetFiles(@"directory", "*.*", SearchOption.AllDirectories);


new System.IO.StreamWriter(@"C:\Output.txt"))
        {
            foreach (string file in allfiles)
            {
                string fileName = System.IO.Path.GetFileName(file) + System.IO.Path.GetExtension(file);
                string line = file.Replace(',', '?') + "," + file.Length.ToString() + "," + fileName.Length.ToString()+","+fileName;
                output.WriteLine(line);
            }
        }

标签: c#string

解决方案


我认为这可能更符合你想要做的事情:

   foreach (string file in allfiles)
   {
       string fileName = System.IO.Path.GetFileName(file);
       string line = file.Replace(',', '?') + ", " + file.Length.ToString() + ", " + fileName.Length.ToString() + "," + fileName;
       output.WriteLine(line);
   }

添加额外的扩展名会让你失去计数。

改变

string fileName = System.IO.Path.GetFileName(file) + System.IO.Path.GetExtension(file);

string fileName = System.IO.Path.GetFileName(file);

推荐阅读