我使用C#.Net代码将包含xml数据的文件复制到linux服务器上的某个位置。我复制文件后不久,我调用了第三方(Java app)网络服务,试图使用复制的文件。第三方服务首先尝试重命名该文件,并在此过程中遇到问题-Java File.renameTo方法返回false。这表明该文件仍被其他进程使用/打开。
流写代码如下所示
using (StreamWriter file = new StreamWriter(filename)
{
file.WriteLine(xml);
file.Close();
}
// Code that calls the web service follows
复制的文件可能很大(在某些情况下为20-30 MB)。有没有办法我们可以完全确认文件已完全复制到该位置,并且在我调用第三方服务之前没有进程保留该文件。我确信除了复制文件之外没有其他进程。
答案 0 :(得分:0)
尝试执行
file.Close();
file.Dispose();
这适合我。
答案 1 :(得分:-1)
尝试将文件命名为其他内容,例如为其提供消费者无法读取的不同扩展名。关闭文件后,将文件名更改为应该的文件名,允许java代码获取文件并执行它需要执行的操作。
答案 2 :(得分:-1)
尝试在file.Flush();
file.Close();