我有两个文件流可以收集不同文件中的不同信息:
FileStream dataStruc = new FileStream("c:\\temp\\dataStruc.txt", FileMode.Create, FileAccess.ReadWrite);
FileStream csvFile = new FileStream("c:\\temp\\" + fileName + ".txt", FileMode.Create, FileAccess.ReadWrite);
StreamWriter sw = new StreamWriter(csvFile);
StreamWriter swc = new StreamWriter(dataStruc);
当两个streamwrite用于获取如下所示的相同信息时:
sw.WriteLine(sheet);
swc.WriteLine(sheet);
然后sw
streamwriter拥有来自文件的信息。我是否错误地设置了文件流?
答案 0 :(得分:2)
假设您没有收到任何异常/错误,并且验证了csvFile
FileStream的正确路径等基本内容,并且发现它们是正确的:尝试添加Flush()
或关闭流的功能使用Close()
。更好的是:使用using
语句。
修改强>
再次阅读你的问题之后:你确定你没有切换文件流吗?
StreamWriter sw = new StreamWriter(csvFile);
StreamWriter swc = new StreamWriter(dataStruc);
而不是
StreamWriter sw = new StreamWriter(dataStruc);
StreamWriter swc = new StreamWriter(csvFile);
你的问题和描述相当含糊:“两个使用的转录器都用于获取相同的信息”。如何将作家用于获取信息?另外:“ sw streamwriter包含来自文件的信息”:你能更具体一点吗?这没有意义。
无论情况如何;使用调试器luke!
答案 1 :(得分:0)
我认为两个StreamWriters都存在冲突的并发访问权限。
您使用FileMode.Create
打开流。请参阅MSDN documentation(由我突出显示):
指定操作系统应创建新文件。 如果 文件已存在,将被覆盖。此操作需要 FileIOPermissionAccess.Write权限。 System.IO.FileMode.Create是 相当于请求如果文件不存在,请使用 创建新的; 否则,请使用截断。
我不确定第二个StreamWriter
是否会覆盖第一个StreamWriter
的文件或者只是失败,这取决于初始化的顺序。无论哪种方式,他们都会尝试相互冲突的工作。
可能的解决方案:
FileMode
,以便在可能的情况下不会覆盖现有文件。 (参见上面的文档。)