2

で読み取りを終了した後でファイルを削除しようとすると、アクセスが拒否されC:\inetpub\wwwroot\Project\temp\ます。StreamReader を既に適切に Close() および Dispose() しますか? NETWORK SERVICE アカウントにも完全な権限を与えましたか? 誰でも私を助けることができますか?

reader = new StreamReader(path + fileName);
DataTable dt = new DataTable();
            String line = null;
            int i = 0;

            while ((line = reader.ReadLine()) != null)
            {
                String[] data = line.Split(',');
                if (data.Length > 0)
                {
                    if (i == 0)
                    {
                        dt.Columns.Add(new DataColumn());
                        foreach (object item in data)
                        {
                            DataColumn c = new DataColumn(Convert.ToString(item));
                            if (Convert.ToString(item).Contains("DATE"))
                            {
                                c.DataType = typeof(DateTime);
                            }
                            else { c.DataType = typeof(String); }
                            dt.Columns.Add(c);
                        }
                        dt.Columns.Add(new DataColumn("CreatedDate", typeof(DateTime)));
                        i++;
                    }
                    else
                    {
                        DataRow row = dt.NewRow();
                        row[0] = "";
                        for (int j = 0; j < data.Length; j++)
                        {
                            if (dt.Columns[j + 1].DataType == typeof(DateTime))
                            {
                                row[j + 1] = Convert.ToDateTime(data[j]);
                            }
                            else
                            {
                                row[j + 1] = data[j];
                            }
                        }
                        row[data.Length + 1] = DateTime.Now.ToString();
                        dt.Rows.Add(row);
                    }
                }
            }
            DataAccess dataAccess = new DataAccess(Constant.CONNECTION_STRING_NAME);
            dataAccess.WriteBulkData(dt, Constant.TABLE);
            reader.Close();
            reader.Dispose();
            File.Delete(path);
4

4 に答える 4

4

File.Delete メソッド呼び出しは、パス + ファイル名をパラメーターとして受け取る必要があります。これは、このリンクhttp://msdn.microsoft.com/en-us/library/system.io.file.delete.aspxによると、パスはファイル名を含む完全なパスであり、パス変数にはフォルダー名のみが含まれているためです。

于 2010-11-25T10:10:57.570 に答える
2

削除しFile.Delete(path);ていませんFile.Delete(path + filename);

于 2010-11-25T10:12:35.170 に答える
2

私も問題を抱えていたので、サーバーへのこの投稿に出くわしました。コピー/削除の前後に次のコード行を追加しました。

消去

File.SetAttributes(file, FileAttributes.Normal);
File.Delete(file);

コピー

File.Copy(file, dest, true);
File.SetAttributes(dest, FileAttributes.Normal);

リンク:パスへのアクセスが拒否されるのはなぜですか?

于 2016-03-09T08:27:28.037 に答える
1

開いています

reader = new StreamReader(path + fileName);

しかし、あなたは閉じています

File.Delete(path);
于 2010-11-25T10:13:45.467 に答える