簡體   English   中英

使用File.Open(參數和File.Read(路徑).Last()

[英]using File.Open(parameters and File.Read(path).Last()

我正在使用c#中的項目,並且需要能夠在處理其他活動之前讀取正在使用的文本文件的最后一行。 這是我的代碼示例。 File.Open自身工作正常,ReadLines(路徑).Last()也是如此。 他們一起工作不起作用。 我是C#的新手,非常感謝任何幫助。 謝謝

 string g = "C:\\zebra\\file.txt";

 File.Open (g, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);                                    

string  file_name = File.ReadLines(g).Last();// error of being unable to access file because it's in use

            Thread.Sleep(50);

            Name.Text = file_name.Substring(13); 
            ID.Text = file_name.Substring(8, 5);

問題是兩個調用中的每一個 - File.OpenFile.ReadLines - 都在“引擎蓋下”使用它自己的文件系統資源,並且在調用File.Readlines之前你沒有正確處理打開的文件連接。同一個文件。

我的建議是完全擺脫File.Open調用,不需要它(除非你以某種方式使用它,你沒有向我們展示)。 File.Readlines包裝整個一次性模式,並負責為您清理所有內容,即打開文件流。

如果您未向我們展示的方式使用File.Open創建的文件流,則使用如下的using語句:

using (FileStream file = File.Open(g, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
    // do your stuff here with your `file` object.
}

// Now do your subsequent/unrelated operations on the file:

string  file_name = File.ReadLines(g).Last();

即使發生異常,這也將負責清理資源。

您可以使用File.ReadAllLines方法,該方法將返回文件行的數組。 這可用於獲取最后一行,因為您知道數組的長度

string[] lines = File.ReadAllLines(g);
string file_name = lines[lines.GetUpperBound(0)];

這樣就可以避免使用File.Open ,因為該方法可以打開,讀取和關閉文件。 這僅在您的文件足夠小以便保存在內存中時才有效

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM