C # SteamWriter: как создать несколько текстовых файлов и записать в них? - PullRequest
1 голос
/ 14 января 2012

Я работаю над расширением для офиса с использованием сборок Interop, и в рамках этого расширения основная задача исполняемого файла, который я создаю, - экспорт слайдов PPTX в виде отдельных изображений.

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

1 Ответ

2 голосов
/ 14 января 2012

Просто поместите ваши 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.");
}
...