2015-11-04 70 views
0

在我的應用程序中,有一個選項用於創建一個包含某些數據的簡單txt文件。我想按順序命名文件,如ST1,ST2 ....這個順序對所有用戶都是一樣的。如果user1創建文件系統應命名文件ST100,然後如果user2創建文件,則系統應命名文件ST101。遞增計數器

我不能使用應用程序範圍,因爲它只是準備就緒,不能在運行時更改,因爲用戶範圍只會影響單個用戶而不是整個應用程序。

我想知道是否有任何其他解決方案來實現這一點,除了使用數據庫表和添加順序。

感謝

+0

最簡單的方法(可能是最強大的)是讀取現有的文件名,然後生成一個已經不存在的名稱。 – sdgfsdh

+0

爲什麼你以100開頭而不是001開頭? –

+0

可能會創建一些隊列?並根據該隊列從一個地方創建這些文件。 –

回答

1

你可以使用一個循環,File.Exists

var dir = @"C:\SampleFolder"; 
int number = 100; // you want to start at 100 
string fileName = String.Format("ST{0}.txt", number.ToString("D3")); 
while(File.Exists(Path.Combine(dir, fileName))) 
    fileName = String.Format("ST{0}.txt", (++number).ToString("D3")); 

最後,你將有一個新的文件名,你會得到正確的路徑:如果您的應用程序

string path = Path.Combine(dir, fileName); 
+0

如果2位用戶同時讀取文件,該怎麼辦? –

+0

@GiorgiNakeuri:他可以將'File.Create'放入'try ... catch'中,處理IOException,然後再次嘗試(直到超過最大嘗試計數變量)。 –

0

始終處於打開狀態,您可以使用下一個條目的數值爲整個系統使用全局變量。如果不是,則可以使用文本文件作爲數據庫與當前文件的編號;這個解決方案的問題在於同步,如果兩個用戶同時進行相同的操作會給你帶來問題,所以最好使用數據庫。

我希望它能幫助你