2012-01-13 2 views
1

Я работаю над расширением для офиса, используя сборки Interop. В качестве части этого расширения основной целью 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

Если вы пытались ответить, и она работала для вас, вы можете пометить его как «принято» с помощью эта маленькая галочка рядом с ней, как спасибо :) –

ответ

2

Просто поместите свой FileStream и StreamWriter в пункт using. Проблема в том, что ваши записи буферизованы, и пока вы не вызываете Close (или у вас есть using), этот буфер остается в памяти и не записывается.

using (var sw = new StreamWriter(new FileStream(...))) 
{ 
    sw.WriteLine("Howdy World."); 
} 

Как отметил комментаторами, хотя, вы можете использовать сокращенную запись:

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

Флеш также заставит его записать в файл. –

+0

'File.CreateText (...)' – SLaks

+0

@Brad это правильно, хотя это не является хорошей причиной, чтобы пропустить предложение 'using'. –

Смежные вопросы