2013-01-03 9 views
11

muszę otworzyć pliku tekstowego w C# za pomocą FileStream oraz z wymienionych poniżejCzytaj rzeczywistej zawartości pliku tekstowego przy użyciu FileStream i te opcje C#

var fileStream = new FileStream(filePath, 
           FileMode.Open, 
           FileAccess.Read, 
           FileShare.Read, 64 * 1024, 
           (FileOptions)FILE_FLAG_NO_BUFFERING | 
            FileOptions.WriteThrough & FileOptions.SequentialScan); 

opcji Plik tekstowy zawiera „1” lub " 0 "i po uzyskaniu wyników zamierzam przypisać zawartość pliku tekstowego do zmiennej łańcuchowej. Jeśli jesteś zainteresowany, potrzebuję powyższych opcji, aby uniknąć odczytywania plików tekstowych z pamięci podręcznej systemu Windows.

System.IO.File.ReadAllText() 

... nie jest wystarczająco dobry.

Czy ktoś byłby na tyle uprzejmy, aby napisać prostą łódź podwodną, ​​która uwzględnia te wymagania dla mnie? Proszę, przykłady, które dotychczas widziałem, dotyczą pracy z bajtami i zderzakami (obszar, nad którym naprawdę muszę teraz popracować) i to pozostawia.

Dzięki

+1

„System.IO.File.ReadAllText() ... nie jest wystarczająco dobre.”? Czemu? –

+1

@SteveB Zakładam, ponieważ nie można określić stanu udostępniania. – ThunderGr

Odpowiedz

7

Można użyć StreamReader czytać ze strumienia:

string contents; 
using(var sr = new StreamReader(fileStream)) 
{ 
    contents = sr.ReadToEnd(); 
} 
16

Może coś takiego:

FileStream fileStream = new FileStream("[path]", FileMode.Open, FileAccess.Read, FileShare.Read, 64 * 1024, 
     (FileOptions)0x20000000 | FileOptions.WriteThrough & FileOptions.SequentialScan); 

    string fileContents; 
    using (StreamReader reader = new StreamReader(fileStream)) 
    { 
     fileContents = reader.ReadToEnd(); 
    } 


    bool assignedvariable = Convert.ToBoolean(fileContents); 

assignedvariable będzie prawdziwe, jeśli plik zawiera 1 i false jeśli zawiera 0.

Przepraszamy, jeśli ta odpowiedź została udzielona lready ludzie bardzo szybko tu publikują.

+0

Dzięki Dave, to się stało. – user1776480

3
File.ReadAllBytes 

lub

File.ReadAllText 

Will zarówno teoretycznie używać pamięci podręcznej plików systemu Windows.

Czytaj this więcej zrozumienia i dla niektórych ograniczeń FILE_FLAG_NO_BUFFERING i przeczytać także this for a similar stackoverflow question

Powiązane problemy