C# 写入文件切断
我的目标是获取一个句子文件,应用一些基本的过滤,并将剩余的句子输出到一个文件和终端。我正在使用拼写库 以下是我如何从文件中获取句子:C# 写入文件切断,c#,file-io,hunspell,C#,File Io,Hunspell,我的目标是获取一个句子文件,应用一些基本的过滤,并将剩余的句子输出到一个文件和终端。我正在使用拼写库 以下是我如何从文件中获取句子: public static string[] sentencesFromFile_old(string path) { string s = ""; using (StreamReader rdr = File.OpenText(path)) { s = rdr.ReadToE
public static string[] sentencesFromFile_old(string path)
{
string s = "";
using (StreamReader rdr = File.OpenText(path))
{
s = rdr.ReadToEnd();
}
s = s.Replace(Environment.NewLine, " ");
s = Regex.Replace(s, @"\s+", " ");
s = Regex.Replace(s, @"\s*?(?:\(.*?\)|\[.*?\]|\{.*?\})", String.Empty);
string[] sentences = Regex.Split(s, @"(?<=\. |[!?]+ )");
return sentences;
}
publicstaticstring[]sentencesFromFile\u old(字符串路径)
{
字符串s=“”;
使用(StreamReader rdr=File.OpenText(路径))
{
s=rdr.ReadToEnd();
}
s=s.Replace(Environment.NewLine,“”);
s=Regex.Replace(s,@“\s+”,“”);
s=Regex.Replace(s,@“\s*?(?:\(.*?\)\[.*?\]\\{.*?\})”,String.Empty);
string[]Sequences=Regex.Split(s,@)(?您是否在完成编写后关闭StreamWriter
?您可以尝试以下操作:
using(StreamWriter w = new StreamWriter(outFile))
{
foreach(string x in xs)
{
if(Checker.check(x, speller))
{
w.WriteLine("[{0}]", x);
Console.WriteLine("[{0}]", x);
}
}
}
执行完内部代码后,using
语句将关闭StreamWriter
(通过调用StreamWriter
上的Dispose
方法)。您需要在关闭流之前刷新流
w.Flush();
w.Close();
using
语句(您也应该使用)将自动关闭流,但不会刷新流
using( var w = new StreamWriter(...) )
{
// Do stuff
w.Flush();
}
Np,我个人认为显式关闭流的自然行为也应该刷新它。我不确定他们为什么决定不这样做。你不需要显式刷新,但你确实需要显式关闭。只要关闭就会自动刷新它。问题是目前根本没有关闭写入程序。@Paul在ILSpy for StreamWriter中,似乎会在Dispose上调用Flush。无论如何,在关闭前调用Flush肯定不会有任何影响。但愿这是真的。我已经浏览了几十个错误,在这些错误中,流必须在关闭前刷新。@rsbarro:依我看,这会影响代码的可读性……尤其是如果你想在抛出了一个异常。看到(无意中)一个误导性的答案被接受是一件很遗憾的事情:(只是一个使用语句是更好的方法。
w.Flush();
w.Close();
using( var w = new StreamWriter(...) )
{
// Do stuff
w.Flush();
}