2011-09-02 116 views
0

我在創建一個文件夾內寫入文本文件時遇到了一些麻煩。它說我沒有訪問路徑'C:\'寫入c文件夾中的子文件夾#

有誰能告訴我爲什麼以及如何解決它?謝謝!

string file_name = Environment.CurrentDirectory; 
    file_name += @"\."; 
    file_name = (string)combobox1.SelectedValue; 
    file_name += @"\."; 
    file_name += (string)combobox2.SelectedValue; 
    TextWriter name = new StreamWriter(file_name); 

編輯:下面是修改後的新代碼...

var location = Path.Combine(Environment.CurrentDirectory, (string)combobox1.SelectedItem); 
Directory.CreateDirectory(location); 
var path = Path.Combine(location, combobox2.SelectedItem); 
TextWriter name = new StreamWriter(path, true); 

我的目標是編寫一個文本文件到\\ TXT

誰能告訴我怎樣?謝謝!

+0

我該如何檢查?有沒有一種更簡單的方法,使其寫入當前目錄,然後在其上的子文件夾?所以喜歡「.. \新文件夾\ text.txt – Alex

回答

0

這裏的解決方案是其他人所說的組合。

正如已經指出的那樣,這條線:

file_name = (string)combobox1.SelectedValue; 

被錯誤地執行,而不是一個連接(+=)的分配(=)。這意味着如果comboxbo1.SelectedValuenull,則您的路徑將變爲\.,即驅動器的根目錄。

您需要記住,SelectedValuenull是合法的,因爲組合框可以有空選擇。您需要處理這種情況,也許可以通過禁用保存功能,直到組合框具有有效的選擇。

這不是真正的權限問題;您實際上不太需要或打算寫入根目錄,這就是爲什麼您沒有獲得該權限的原因。

+0

自那時起我已經實現了我的代碼,以適應我的代碼,以便它現在進入正確的目錄。但是,我得到一個DirectoryNotFoundException是未處理的錯誤。我以某種方式創建文件夾錯誤? – Alex

+0

您的代碼中沒有任何內容正在創建目錄。如果您需要在創建文件之前確保該目錄存在,請使用Directory.CreateDirectory()。此方法將自動創建任何必需的子目錄。 –

+0

好吧,於是我又碰到了一個問題,那就是UnauthorizedAccessException是未處理的錯誤,它創建了兩個文件夾,所以我從組合語句中刪除了第二個組合框。我的目標是在<當前目錄> \ \ text.txt中創建一個文本文件。 – Alex

1

你檢查了file_name的值以確保它是一個有效的路徑嗎?

你已經在3號線

string file_name = Environment.CurrentDirectory; 
    file_name += @"\."; 
    file_name += (string)combobox1.SelectedValue; // <-- 
    file_name += @"\."; 
    file_name += (string)combobox2.SelectedValue; 
    TextWriter name = new StreamWriter(file_name); 
1

您應該使用Path.Combine()

var fileName = Path.Combine(Environment.CurrentDirectory, (string)comboBox1.SelectedValue, 
          (string)comboBox2.SelectedValue); 

如果在這一點上它仍然無法正常工作,至少你會知道它實際上是一個權限/存在/等。問題,而不是您構建文件名的方式存在問題。

+0

我試過這個,但得到了這個錯誤: 參數NullException是未處理。爲什麼? – Alex

+0

我如何設置權限/存在問題? – Alex

+0

@Alex你得到那個異常因爲你傳遞的參數之一是'null',這可能是你的問題,在線上設置一個斷點,然後檢查哪一個斷點,然後修復它! – dlev