0
我正在嘗試構建一個自動備份和還原系統。System.UnauthorizedAccessException:訪問路徑C
我的日誌文件:
2012-08-02 22:34:06 - Init: Folder main created for server Teamdeathmatch
2012-08-02 22:34:06 - Backup: Couldn't copy files: System.UnauthorizedAccessException: Access to the path 'C:/temp/backups/Teamdeathmatch/server/main' is denied.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite)
at System.IO.File.Copy(String sourceFileName, String destFileName, Boolean overwrite)
at BackupRollback.Backup.getServerFiles() in C:\Users\jordi\Desktop\ConsoleApplication1 - kopie\Backup.cs:line 51
目標和文件存在。
我希望任何人都可以幫助我。還有一些關於我自c-sharp編程的反饋對我來說是新的。
謝謝
class Backup
{
public static void getServerFiles()
{
Log.Info("Get servers");
string[] fileEntries = Directory.GetDirectories("c:/Gameservers");
Log.Info("Servers found: " + fileEntries.Count());
string _directoryPath = @"C:\temp\backups";
// check folder exists
if (!Directory.Exists(_directoryPath))
{
Log.Data("Temp backup folder not found");
Directory.CreateDirectory(_directoryPath);
Log.Data("Temp backup folder created successfully");
}
else
{
Log.Data("Temp backup folder found");
}
// move files to directory
foreach (string fileName in fileEntries)
{
try
{
string servername = Path.GetFileNameWithoutExtension(fileName);
Directory.CreateDirectory("C:/temp/backups/" + servername + "/server");
Log.Data("Folder server created for server " + servername);
Directory.CreateDirectory("C:/temp/backups/" + servername + "/server/main");
Log.Data("Folder main created for server " + servername);
File.Copy("C:/temp/backups/" + servername + "/server/main", "C:/Gameservers/" + servername + "/server/main/server.cfg");
Log.Data("File server.cfg copied for server " + servername);
Directory.CreateDirectory("C:/temp/backups/" + servername + "/b3 server/conf");
Log.Data("Folder conf [b3] created for server " + servername);
File.Copy("C:/temp/backups/" + servername + "/server/main", "C:/Gameservers/" + servername + "/b3 server/conf/b3.xml");
Log.Data("File b3.xml copied for server " + servername);
Directory.CreateDirectory("C:/temp/backups/" + servername + "/server/mods");
Log.Data("Folder mods created for server " + servername);
DirectoryCopy("C:/temp/backups/" + servername + "/server/", "C:/Gameservers/mods/" + servername + "/server/mods/");
Log.Data("Folder mods copied for server " + servername);
}
catch (Exception ex)
{
Log.Data("Couldn't copy files: " + ex.ToString());
}
}
}
private static void DirectoryCopy(string sourceDirName, string destDirName)
{
DirectoryInfo dir = new DirectoryInfo(sourceDirName);
DirectoryInfo[] dirs = dir.GetDirectories();
FileInfo[] files = dir.GetFiles();
foreach (FileInfo file in files)
{
string temppath = Path.Combine(destDirName, file.Name);
file.CopyTo(temppath, false);
}
foreach (DirectoryInfo subdir in dirs)
{
string temppath = Path.Combine(destDirName, subdir.Name);
DirectoryCopy(subdir.FullName, temppath);
}
}
}
你正在運行這行代碼 string [] fileEntries = Directory.GetDirectories(「c:/ Gameservers」);您的本地機器或遠程服務器機器上的 .. ?? – MethodMan 2012-08-02 21:07:54
爲了明顯地避免這種情況發生,您是否有權寫入該目錄?嘗試而不是寫入C:\ temp \ backups寫入其他地方,如我的文檔。那樣有用嗎? – Sam 2012-08-02 21:08:38
c:/ Gameservers在我的遠程機器上。 – 2012-08-03 12:19:37