2014-05-19 35 views
3

我寫了下面的程序來創建一個.txt文件到一個特定的目錄。但我無法創建該文件。我甚至改變了字符串fileName = @"D:\\abc.txt";的路徑,程序編譯,但沒有創建到該特定目錄的文件。用c創建一個.txt文件到一個特定的目錄#

有誰能幫我弄清楚什麼可能是錯誤?

namespace SimpleLicense 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 

      string fileName = @"C:\\Temp\\abc.txt"; 

      try 
      { 
       // Check if file already exists. If yes, delete it. 
       if (File.Exists(fileName)) 
       { 
        File.Delete(fileName); 
       } 

       // Create a new file 
       using (StreamWriter sw = File.CreateText(fileName)) 
       { 
        sw.WriteLine("Installed Date: {0}", DateTime.Now.ToString()); 
        sw.WriteLine("Thermo Licensing System file"); 

        DateTime newDate = DateTime.Now.AddDays(31); 
        sw.WriteLine("License Expires After"+newDate); 

        // sw.WriteLine("Add "); 
        // sw.WriteLine("Done! "); 
       } 

       // Write file contents on console. 
       using (StreamReader sr = File.OpenText(fileName)) 
       { 
        string s = ""; 
        while ((s = sr.ReadLine()) != null) 
        { 
         Console.WriteLine(s); 
        } 
       } 
      } 
      catch (Exception Ex) 
      { 
       Console.WriteLine(Ex.ToString()); 
      } 
     } 
    } 
} 
+9

你得到或發現異常?如果是這樣,它說什麼? – martennis

+7

你知道,當你使用'@'時,你不需要加倍你的斜槓,對吧? – dasblinkenlight

+0

也用新的StreamWriter(「fileName」)替換File.CreateText(fileName) –

回答

6

您應該做的:

string fileName = "C:\\Temp\\abc.txt"; 

或者

string fileName = @"C:\Temp\abc.txt"; 

的@字面上解釋字符串,所以你不需要逃避你的反斜線。

注:

當我做:string fileName = @"C:\Users\Shashank\Desktop\test.txt";(我的電腦)

它沒有工作和文本文件的樣子:

Installed Date: 5/19/2014 9:37:08 PM 
Thermo Licensing System file 
License Expires After6/19/2014 9:37:08 PM 

您應該:

1)確保您的目錄存在 - 使用實際存在的目錄
2)確保你有寫入權限到該文件夾​​

+1

這是** NOT **錯誤的原因。 「C:\\ Temp \\ abc.txt」'工作得很好!文件系統不關心額外的反斜槓 –

+0

這是正確的,但它不回答問題,這不是它不工作的原因。無論你使用單反斜槓還是雙反斜槓都不會產生差異 – EaziLuizi

+1

該代碼即使在雙斜槓下也能正常工作,這並不回答 –

0

//檢查文件是否已經存在。如果是,請刪除它。

if (File.Exists(fileName)) 
    { 
      File.Delete(fileName); 
    } 

    File.Create("D:\\Yourfile.txt"); 
+3

使用(StreamWriter sw = File.CreateText(fileName))創建或打開文件進行寫入。如果存在,他已經在做檢查/刪除 – EaziLuizi

-2

嘗試改變

StreamWriter sw = File.CreateText(fileName) 


StreamWriter sw = new StreamWriter(fileName, true) 


StreamReader sr = File.OpenText(fileName) 


StreamReader sr = new StreamReader(fileName) 
+1

爲什麼?它會有什麼不同?這些變化如何克服當前的錯誤? –

+1

你的代碼是絕對正確的。我可以通過運行你的代碼來創建文件。仔細檢查c:\ drive。 –

3

還要確保該文件夾存在。

除了這上面的答案是確定

+1

這是重現錯誤的一種方法。另一個是試圖寫入磁盤的根沒有管理權限 –

2

如果你的程序失敗,它應該拋出一個異常,這將有助於診斷問題。請在調試模式下運行程序以顯示異常。

問題本身可能來自不存在的目錄(如果需要創建它,請在啓動時調用「Directory.Create」)或缺少權限,請檢查用戶是否對文件夾具有「寫入」權限。

該文件也可能被另一個進程鎖定。

相關問題