2012-12-24 60 views
-1

我正在做一個小小的備份工具......而且我有一個小問題,不知道如何解決這個問題。所以這就是爲什麼我問這裏...代碼:該進程無法訪問該文件,因爲它正在被另一個進程使用#2

strDirectoryData = dlg1.SelectedPath; 
strCheckBoxData = "true"; 
clsCrypto aes = new clsCrypto(); 
aes.IV = "MyIV";  // your IV 
aes.KEY = "MyKey"; // your KEY  
strDirectoryEncryptedData = aes.Encrypt(strDirectoryData, CipherMode.CBC); 
strCheckBoxEncryptedData = aes.Encrypt(strCheckBoxData, CipherMode.CBC); 

StreamWriter dirBackup = new StreamWriter(dirBackupPath, false, Encoding.UTF8); 
StreamWriter checkBackup = new StreamWriter(autoBackupPath, false, Encoding.UTF8); 
dirBackup.WriteLine(strDirectoryEncryptedData, Encoding.UTF8); 
dirBackup.Close(); 
checkBackup.WriteLine(strCheckBoxData, Encoding.UTF8); 
checkBackup.Close();' 

得到一個錯誤每次 - 因爲它正由另一個進程的進程無法訪問該文件...

我也有這在Form1_Load

if (!Directory.Exists(folderPath)) 
{ 
    Directory.CreateDirectory(folderPath); 
    string strCheckBoxData; 
    string strDirectoryData; 
    string strCheckBoxEncryptedData; 
    string strDirectoryEncryptedData; 
    strDirectoryData = "Nothing here"; 
    strCheckBoxData = "false"; 
    clsCrypto aes = new clsCrypto(); 
    aes.IV = "MyIV";  // your IV 
    aes.KEY = "MyKey"; // your KEY  
    strDirectoryEncryptedData = aes.Encrypt(strDirectoryData, CipherMode.CBC); 
    strCheckBoxEncryptedData = aes.Encrypt(strCheckBoxData, CipherMode.CBC); 

    StreamWriter dirBackup = new StreamWriter(dirBackupPath, false, Encoding.UTF8); 
    StreamWriter checkBackup = new StreamWriter(autoBackupPath, false, Encoding.UTF8); 
    dirBackup.WriteLine(strDirectoryEncryptedData); 
    dirBackup.Close(); 
    checkBackup.WriteLine(strCheckBoxEncryptedData); 
    checkBackup.Close(); 
} 
else 
{ 
    string strCheckBoxDecryptedData; 
    string strDirectoryDecryptedData; 

    StreamReader dirEncrypted = new StreamReader(dirBackupPath); 
    StreamReader checkEncrypted = new StreamReader(autoBackupPath); 

任何想法?

+0

請停止使用匈牙利命名法。這是一個建議:) – miniBill

回答

4

您沒有正確關閉您的資源。您無法打開該文件進行書寫,因爲您已將其打開以供閱讀,但尚未關閉。

當您完成使用它們時,您需要處理您的StreamReader對象。 StreamReader類實現IDisposable。我建議您使用using塊,以便即使存在異常時文件也會始終關閉。

using (StreamReader dirEncrypted = new StreamReader(dirBackupPath)) { 
    // read from dirEncrypted here 
} 

相關

+0

嗯...讓我們試試.. – user1927274

+0

更改'StreamWriter dirBackup =新的StreamWriter(dirBackupPath,false,Encoding.UTF8); dirBackup.WriteLine(strDirectoryEncryptedData); dirBackup.Close(); (StreamWriter dirBackup = new StreamWriter(dirBackupPath,false,Encoding.UTF8)) { //在此處寫入行 }並且仍然出現錯誤。 – user1927274

+0

@ user1927274:雖然我認爲你提出的改變是一個非常好的主意,你絕對應該這樣做,但我認爲這與你提出當前問題的問題沒有關係。請再次閱讀我的答案 - 它指的是** StreamReader **,而不是'StreamWriter'。 –

相關問題