1

私の質問を参照して、ファイルの読み取り中に正しく実行していますか?

このコードを使用して iCal ファイルを作成していますが、正しく行っているのか、このエラーが発生したときに何かを処分する必要があるのか​​ わかりません。

System.IO.IOException: The process cannot access the file 'C:\doc.ics' because it is being used by another process.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
   at System.IO.StreamWriter.CreateFile(String path, Boolean append)
   at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize)
   at System.IO.StreamWriter..ctor(String path)

私が使用しているコードは、

    String filePath = paramUri.LocalPath.ToString().TrimStart("filePath:///".ToCharArray());
    int lastSlash = filePath.LastIndexOf('\\');
    if(lastSlash > 0)
    {
        String folderPath = filePath.Substring(0, lastSlash);
        DirectoryInfo di = new DirectoryInfo(folderPath);
        if(!di.Exists)
            di.Create();
    }

    //Use a streamwriter to create a file in the location specified in the URI
    using (StreamWriter sw = new StreamWriter(filePath))
    {
        //Autoflush enabled so we don't have to worry about closing the streamwriter
        sw.AutoFlush = true;
        sw.WriteLine("BEGIN:VCALENDAR");
        sw.WriteLine("PRODID:-//Microsoft Corporation//Outlook 12.0 MIMEDIR//EN");
        sw.WriteLine("VERSION:2.0");
        sw.WriteLine("METHOD:PUBLISH");
        sw.WriteLine("X-MS-OLK-FORCEINSPECTOROPEN:TRUE");
        //I am adding more details but they are not relevant to post
    }
4

1 に答える 1

0

コンストラクターでエラーが発生しているためStreamWriter、含まれているコードによってファイルがロックされていない可能性があります。

別のプロセスによってロックされていると思いますが、おそらくテキスト エディターで開いていますか?

于 2013-03-21T10:53:56.490 に答える