2013-01-03 5 views
11

tôi cần phải mở một tập tin văn bản trong C# sử dụng FileStream và với các tùy chọn đề cập dưới đâyĐọc nội dung thực tế của tập tin văn bản sử dụng FileStream và các tùy chọn này C#

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

Các tập tin văn bản có chứa một "1" hoặc " 0 "và sau khi có được kết quả, tôi sẽ gán nội dung của tệp văn bản vào biến chuỗi. Trong trường hợp bạn quan tâm, tôi cần các tùy chọn ở trên để tránh Windows đọc các tệp văn bản từ bộ nhớ cache.

System.IO.File.ReadAllText() 

... không đủ tốt.

Ai đó có thể đủ tử tế để viết một tiểu đơn giản, kết hợp các yêu cầu này cho tôi, vì các ví dụ mà tôi đã thấy cho đến nay liên quan đến byte và bộ đệm (một khu vực tôi thực sự cần phải làm việc vào lúc này) và để nó ở đó.

Cảm ơn

+1

"System.IO.File.ReadAllText() ... là không đủ tốt."? Tại sao? –

+1

@SteveB Tôi giả sử vì bạn không thể chỉ định trạng thái chia sẻ. – ThunderGr

Trả lời

7

Bạn có thể sử dụng một StreamReader để đọc từ stream:

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

Có lẽ cái gì đó như:

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 sẽ đúng nếu các tập tin chứa 1 và false nếu nó chứa 0.

Xin lỗi nếu điều này đã được trả lời người đã đăng rất nhanh ở đây.

+0

Cảm ơn Dave, đã thực hiện công việc. – user1776480

3
File.ReadAllBytes 

hoặc

File.ReadAllText 

sẽ cả về mặt lý thuyết sử dụng bộ nhớ cache cửa sổ tập tin.

đọc this cho sự hiểu biết hơn và cho một số các hạn chế đối với FILE_FLAG_NO_BUFFERING và cũng đọc this for a similar stackoverflow question