K. *_*son 0 c# csv streamwriter
_flagImageSources是一个.png包含标志文件的195个文件路径的字符串数组.每个文件路径都是格式C:\Users\user\someFolder\...\Flags\xx.png,其中xx是国家/地区代码顶级域名(例如.uk,对于英国).
执行"代码片段1"中的代码时,最初为空的output.csv文件的输出如"CSV文件输出1"所示:
代码片段1
_streamWriter = new StreamWriter("output.csv");
string str;
string outputText;
for (int i = 0; i < _flagImageSources.Length; i++)
{
str = _flagImageSources[i];
outputText = str.Substring(68, 6);
_streamWriter.WriteLine(outputText);
}
Run Code Online (Sandbox Code Playgroud)
CSV文件输出1
ae.png
af.png
?
zw.png
Run Code Online (Sandbox Code Playgroud)
但是,当我将子串长度从6减少到3(或更少)时,我得到输出的输出是一个空.csv文件.
代码片段2
_streamWriter = new StreamWriter("output.csv");
string str;
string outputText;
for (int i = 0; i < _flagImageSources.Length; i++)
{
str = _flagImageSources[i];
outputText = str.Substring(68, 3);
_streamWriter.WriteLine(outputText);
}
Run Code Online (Sandbox Code Playgroud)
CSV文件输出2: "空文件"
我不明白为什么我不能写长度为3(或更少)的字符串到我的.csv文件.有谁知道为什么会这样,以及如何解决?
因为您没有刷新输出或正确关闭然后处理流.你需要或者设置AutoFlush到true或手动调用.Flush(),然后.Close()最终.Dispose().
_streamWriter = new StreamWriter("output.csv");
string str;
string outputText;
for (int i = 0; i < _flagImageSources.Length; i++)
{
str = _flagImageSources[i];
outputText = str.Substring(68, 3);
_streamWriter.WriteLine(outputText);
}
_streamWriter.Flush();
_streamWriter.Close();
// prev. two lines are redundant b/c dispose will accomplish this.
_streamWriter.Dispose();
Run Code Online (Sandbox Code Playgroud)
如果您使用Disposable模式,所有这些都将自动发生,这是首选方法:
using (var sw = new StreamWriter("output.csv"))
{
for (int i = 0; i < _flagImageSources.Length; i++)
{
string str = _flagImageSources[i];
string outputText = str.Substring(68, 3);
sw.WriteLine(outputText);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |