Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.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
C#File.ReadallText做奇怪的事情_C# - Fatal编程技术网

C#File.ReadallText做奇怪的事情

C#File.ReadallText做奇怪的事情,c#,C#,我要做的是读取文件中的所有文本,如果其中包含单词“Share”,则执行正则表达式。代码如下: DirectoryInfo dinfo = new DirectoryInfo(@"C:\Documents and Settings\g\Desktop\123"); FileInfo[] Files = dinfo.GetFiles("*.txt"); foreach (FileInfo filex in Files) { st

我要做的是读取文件中的所有文本,如果其中包含单词“Share”,则执行正则表达式。代码如下:

DirectoryInfo dinfo = new DirectoryInfo(@"C:\Documents and Settings\g\Desktop\123");
        FileInfo[] Files = dinfo.GetFiles("*.txt");
        foreach (FileInfo filex in Files)
        {
            string contents = File.ReadAllText(filex.FullName);
            string matchingcontants = "Share";
            if (contents.Contains(matchingcontants))
            {
                string sharename = Regex.Match(contents, @"\+(\S*)(.)(.*)(.)").Groups[3].Value;
                File.AppendAllText(@"C:\sharename.txt", sharename + @"\r\n");
            }

        }
当我调试时,我得到。。。 contents=“\r\0\n\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0\r\0\n\0+\0S\0h\0a\0r\0e\0\\0\\0\\0j\05\02\0\\0w\0w\0w\0\

\0S\0h\0a\0r\0e\


不共享。有任何提示?提示或建议吗?

看起来这是一个Unicode文件,您正在尝试将其读取为普通ASCII。

看起来您有一个保存为UTF-16(即
编码.Unicode
)的文件。使用正确的编码读取该文件,一切都应该正常

幸运的是,File.ReadAllText的重载采用了以下编码:

string contents = File.ReadAllText(filex.FullName, Encoding.Unicode);

不幸的是,对于不在UTF-16中的文件,这样做是错误的。虽然有一些猜测编码的启发式方法,但理想情况下,您应该在打开文件之前知道编码。

我的猜测是编码设置不正确,您可能需要使用ReadAllText(字符串,编码)指定编码。

实际上,在不指定任何其他内容的情况下,它会尝试将文件读取为UTF-8。