2011-12-22 24 views
17

Kodumu değiştirdim, böylece bir dosyayı salt okunur olarak açabildim. Şimdi FileStream ve StreamReader benim bir dizeye dönüştürülmediğinden, File.WriteAllText kullanarak sorun yaşıyorum.StreamReader'ı bir dizeye nasıl dönüştürebilirim?

static void Main(string[] args) 
{ 
    string inputPath = @"C:\Documents and Settings\All Users\Application Data\" 
        + @"Microsoft\Windows NT\MSFax\ActivityLog\OutboxLOG.txt"; 
    string outputPath = @"C:\FAXLOG\OutboxLOG.txt"; 

    var fs = new FileStream(inputPath, FileMode.Open, FileAccess.Read, 
             FileShare.ReadWrite | FileShare.Delete); 
    string content = new StreamReader(fs, Encoding.Unicode); 

    // string content = File.ReadAllText(inputPath, Encoding.Unicode); 
    File.WriteAllText(outputPath, content, Encoding.UTF8); 
} 
+0

'StreamReader' bir' string' değil. Yorum yaptığınız 'File.ReadAllText' yöntemini kullanarak bir' string' alacaktır. –

+0

Sadece bir dosyanın içeriğini başka bir dizine kopyaladığınız görülüyor. Neden dosyanın bir kopyasını doğrudan çıkış dizinine yapmıyorsunuz? – docmanhattan

+0

Hey, son yazının hakkındaki yorumumu çözebildiğine sevindim ... FileStream'inizde bir '' '' yapmak ... Gördüğünüz gibi birçok potansiyel sorun var. Bunun dışında, bu StreamReader.ReadToEnd() cevapları ihtiyacınız olan şeydir. – rfmodulator

cevap

39

StreamReader ait ReadToEnd() yöntemini kullanın:

string content = new StreamReader(fs, Encoding.Unicode).ReadToEnd(); 

O erişimi sonra StreamReader kapatmak için, tabii ki, önemli olan

Bu benim kodudur. Bu nedenle, ifadesi, keyboardP ve diğerleri tarafından önerilen şekilde anlamlıdır.

string content; 
using(StreamReader reader = new StreamReader(fs, Encoding.Unicode)) 
{ 
    content = reader.ReadToEnd(); 
} 
+8

Akışlar için 'using' deyimini kullanmanızı öneririm. – albertjan

+0

ve dize birleştirme yerine Path.Combine (...) kullanarak biliyorum. Cevabı kaldırdığımdan sadece cevabı kaldırdım – Adam

+3

değişti. Cevabım kabul edildiğinden, @ keyboardP yanıtında olduğu gibi bir kullanım ifadesi içerecek şekilde genişlettim. – Adam

11
string content = String.Empty; 

using(var sr = new StreamReader(fs, Encoding.Unicode)) 
{ 
    content = sr.ReadToEnd(); 
} 

File.WriteAllText(outputPath, content, Encoding.UTF8); 
+3

+1, StreamReader – Jason

+1

'u bertaraf etmek için kullanım bildirimini eklemek üzere önemli bir nokta. – Adam

3

kullanın StreamReader.ReadToEnd() yöntemi.

İlgili konular