我有将文件写入本地磁盘的方法。另一种方法获取该文件并将其上载到sftp服务器。问题是,sftp服务器上的文件是空的。这是我的一小段代码:
WriteToLocalFolder(content, filename);
WriteToSftpServer(filename, server logon params);
在 WriteToLocalFolder 写完之前,是否会调用 WriteToSftpServer ?如果是,我怎么能说 WriteToSftpServer 只有在 WriteToLocalFolder 写完文件后才能启动?
WriteToLocalFolder 在真实代码中如下所示:
public static void WriteToFolder(StringBuilder content, string whereTo)
{
File.WriteAllText(whereTo, content.ToString());
}
所以我认为流已关闭......
谢谢: - )
答案 0 :(得分:2)
WriteToSftpServer
中的代码不应该在WriteToLocalFolder
完成之前发生(因为它似乎不是异步)。但是,文件流可能未正确关闭,因此WriteToSftpServer
无法访问它。
尝试在WriteToSftpServer
内获取加载文件的断点,以查看加载的内容。如果文件正确加载,您可以随时在该方法中“步入下一步”,以查看它在哪里中断。
答案 1 :(得分:0)
如果WriteToLocalFolder没有产生单独的线程,则 NOT 可能。也许您在任何方法中都错过了Stream.Flush
,Stream.Close
或Stream.Dispose
?
答案 2 :(得分:0)
这取决于WriteToLocalFolder
中的代码,但听起来更有可能是您正在向文件写入内容并忘记Flush
写入缓冲区。如果不是这种情况,请修改您的问题并添加WriteToLocalFolder
的代码。
答案 3 :(得分:0)
do
{
WriteToLocalFolder(content, filename);
} while ((System.IO.File.Exists(filename) != true));
WriteToSftpServer(filename, server logon params);
此循环将确保文件在到达下一行之前与其内容一起存在..