2012-01-13 76 views
1

我正在使用Interop程序集擴展Office,作爲此擴展的一部分,我構建的exe的主要目標是將PPTX幻燈片導出爲單個圖像。C#SteamWriter:如何創建多個文本文件並寫入它們?

我也想創建一個文本文件,其中包含每張幻燈片上的一些信息。我可以導出幻燈片。我也創建一個文本文件,但沒有寫入它。每個文件應導出爲1.txt,2.txt ...

class { 
static void ConvertAndExportImagesAndTextFiles(ARGS){ 

//Some stuff that reads and prepares the slides for the export method 
//Loops and exports several "objSlide" after taking args 

    foreach (Microsoft.Office.Interop.PowerPoint.Slide objSlide 
             in objActivePresentation.Slides) 
{ 
i++; 

string PathAndNumber = string.Concat(FilePath, i); 
string PathAndNumberWithExt = string.Concat(PathAndNumber, ".txt"); 

FileStream fs = new FileStream(

        PathAndNumberWithExt , 

        FileMode.OpenOrCreate, 

         FileAccess.ReadWrite); 

       StreamWriter sw = new StreamWriter(fs); 
       try 
       { 
        sw.WriteLine("Howdy World."); 
       } 
       finally 
       { 
       ????????? 
       } 

    objSlide.Export(FilePath, format, res, res); 

    } 

對不起,我輸了...幻燈片的出口,因爲它們是由PowerPoint索引,但我需要的東西incmnt這裏?

+0

如果你嘗試了答案和它的工作適合你,你可以將其標記爲「接受」使用它旁邊的小複選標記,作爲感謝:) – 2012-01-13 20:44:38

回答

2

只需將FileStream和StreamWriter放入using子句即可。問題在於你的寫操作被緩衝了,直到你撥打Close(或者using爲你這麼做),那個緩衝區仍然保留在內存中,並且沒有被寫出來。

​​3210

正如批評家指出,不過,你可能想使用速記:

using (var sw = File.CreateText(...)) 
{ 
    sw.WriteLine("Howdy World."); 
} 
+1

Flush也會強制它寫入文件。 – 2012-01-13 20:36:50

+0

'File.CreateText(...)' – SLaks 2012-01-13 20:37:45

+0

@Brad沒錯,儘管這不是跳過'using'子句的好理由。 – 2012-01-13 20:38:03

相關問題