C#File.WriteAllText不区分大小写?

时间:2013-09-24 09:06:42

标签: c# case-sensitive

我有一个名为 Pro-Okay.txt 的文件名,我正在尝试创建一个名为 Pro-okay.txt 的新文件(如果它不存在)。我能够对存在的文件进行区分大小写的搜索,但是当代码移到 File.WriteAllText(“Pro-okay.txt”,“”)时,它会覆盖 Pro-Okay.txt ,其中已包含我不想覆盖的信息。我是否可以使用区分大小写的等效项来创建新的Pro-okay.txt文件?

这是我目前的代码:

public static bool FileExistsCaseSensitive(string filename)
        {
            string name = Path.GetDirectoryName(filename);
            return name != null && Array.Exists(Directory.GetFiles(name), s => s == Path.GetFullPath(filename));
        }

public void GetProWords(string word)
        {
            WordDataSet.Clear();
            Words.Clear();
            Frequency.Clear();
            string[] WordSet;

            string fname = Environment.CurrentDirectory + "\\Brain\\Pro-" + word + ".txt";
            if (FileExistsCaseSensitive(fname))
            {

            }
            else
            {
                File.WriteAllText(fname, "");
            }

            TextReader txtReader = new StreamReader(fname);
            try
            {
                while (txtReader.Peek() != -1)
                {
                    string line = txtReader.ReadLine();
                    if (line.Contains('~'))
                    {
                        WordSet = line.Split('~');
                        Words.Add(WordSet[0].ToString());
                        Frequency.Add(Convert.ToInt32(WordSet[1]));
                    }
                }
                for (int i = 0; i < Words.Count; i++)
                {
                    WordDataSet.Add(new WordData { Word = Words[i], Frequency = Frequency[i] });
                }
            }
            finally
            {
                txtReader.Close();
            }
        }

1 个答案:

答案 0 :(得分:2)

您无法在Windows上轻松执行此操作,因为Windows中的文件名默认情况下不区分大小写。

(Iit 可以将文件系统更改为区分大小写,但这是一个非常重要的事情,你真的不想做...)