2014-07-17 34 views
0

我有一個C#控制檯應用程序,它使用來自txt文件的文本作爲SQL查詢的參數。查詢運行後,它將最高主鍵存儲在文本文件中。下一次運行時,它將使用WHERE語句中該文本文件的第一行來獲取高於先前存儲的主鍵。下面是我使用的代碼:在C#控制檯應用程序的發佈文件夾中讀取和寫入文本文件

//獲取最新的主鍵

static String mostRecentID= File.ReadAllLines(@"C:\DataStorage\latestID.txt").First().Trim(); 

//運行查詢

SELECT * FROM whatever WHERE pk > mostRecentID 

//店最新主鍵

DataRow mostRecentIDRow= exportTable.Select().FirstOrDefault(); 
     if (mostRecentIDRow!= null) 
     { 
      mostRecentID = mostRecentIDRow[0].ToString().Trim(); 
      File.WriteAllLines(@"C:\DataStorage\latestID.txt", new String[] { mostRecentID}); 
     } 

我需要能夠獨立於程序或文件所在的位置讀取和寫入此文本文件。有沒有辦法做到這一點,而保持在程序的發佈文件夾?

+2

你爲什麼不問用戶的文件作爲命令行參數? –

+0

您想要讀取/寫入應用程序根目錄中的文件嗎? – Tsukasa

+0

將文件保留在應用程序根目錄中。 –

回答

0

只需使用這個變量:

string myDirectory = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); 

以獲取執行程序的目錄。

所以,當你把你的.txt在發行文件夾,您可以使用:

File.WriteAllLines(myDirectory + "/" + "latestID.txt", new String[] { mostRecentID}); 
+0

太棒了,那就是訣竅。謝謝。 – LtDisco

0

如果你想保持文本文件在應用程序的根位置使用此

string file = Path.Combine(
    System.Reflection.Assembly.GetExecutingAssembly().Location, "latestID.txt"); 
0

,你可以得到當前運行的程序集的這樣的路徑:

string path = System.IO.Path.GetDirectoryName( 
    System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); 

和那裏,你可以保存/載入文件

相關問題