2012-09-17 73 views
0

我无法在c#web服务代码中创建文件后立即打开文件。 该目录最初不存在。所以程序创建目录和文件。然后尝试打开文件以写入一行。但它无法打开文件。错误是该文件在另一个进程中打开。刚刚从webservice创建文本文件后无法打开文本文件

我试图从Windows资源管理器中打开文件。该文件打开,但错误消息仍在。 我试图删除文件夹C:\测试,它说,文件是打开是WebDev.WebDevServer40.exe

任何帮助,请。

[WebMethod] 
    public string saveFileUploaderName(string name) 
    { 
     string path = "c:\\Test"; 
     string filename = "Test.txt"; 
     string completeFileName = Path.Combine(path,filename); 
     if(!File.Exists(completeFileName)) 
     { 
      Directory.CreateDirectory(path); 
      File.Create(completeFileName); 
     } 
     StreamWriter writer = File.AppendText(completeFileName); 
     writer.WriteLine(name); 
     writer.Flush(); 
     writer.Close(); 
return "success"; 
} 
+0

为什么你要打开的服务器上的文本文件?最佳做法是锁定服务器上基于文件的访问权限,特别是像w3wp这样的进程。你可以使用数据库吗? –

+0

谢谢。我实际上在做一个课堂作业。这个问题让我从Web服务写入文本文件。 – crazyTechie

+0

为什么你需要单独创建文件?如果您以追加模式创建StreamWriter,它将为您创建一个,如果它尚未存在。 – Typist

回答

2

File.Create返回一个流,但你放弃它。 所以(我想!)你要么需要使用返回的流,要么在试图打开一个新的流到同一个文件之前明确地关闭它。

1

您需要关闭文件,请尝试:

File.Create(completeFileName).Close(); 
0

使用File.AppendAllText代替。

这将创建文件,如果它不存在。

您的代码将是简单的

[WebMethod] 
public string saveFileUploaderName(string name) 
{ 
    string path = "c:\\Test"; 
    string filename = "Test.txt"; 
    string completeFileName = Path.Combine(path,filename); 
    File.AppendAllText(completeFileName, name); 
    return "success"; 
}