Создание и сохранение файлов в C#

Мне нужно создать и записать в файл .dat. Я предполагаю, что это почти тот же процесс, что и запись в файл .txt, но только с использованием другого расширения.

Говоря простым языком, я хотел бы знать, как:

-Создать файл .dat

-Напишите ему

-И сохраните файл с помощью SaveFileDialog

Есть несколько страниц, которые я просматривал, но я думаю, что мое лучшее объяснение будет на этом сайте, потому что он позволяет мне точно указать, что мне нужно изучить.

Следующий код - это то, что у меня есть на данный момент. По сути, он открывает окно SaveFileDialog с пустым разделом File:. Сопоставление с папкой и нажатие кнопки «Сохранить» ничего не сохраняет, потому что файл не используется. Пожалуйста, помогите мне использовать это для сохранения файлов в разных местах.

Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
dlg.FileName = "";
dlg.DefaultExt = "";

Nullable<bool> result = dlg.ShowDialog();

if (result == true)
{
    string filename = dlg.FileName;
}

Страницы, которые я просматривал:

-http://msdn.microsoft.com/en-us/library/8bh11f1k.aspx

-http://social.msdn.microsoft.com/Forums/en-US/cd0b129f-adf1-4c4f-9096-f0662772c821/how-to-use-savefiledialog-for-save-text-file< /а>

-http://msdn.microsoft.com/en-us/library/system.io.file.createtext(v=vs.110).aspx


person Eric after dark    schedule 04.02.2014    source источник
comment
Это зависит от того, что вы понимаете под .dat . Если это действительно текстовый файл с другим расширением, это так же просто, как создать текстовый файл с расширением .dat. Если вы ожидаете двоичный формат, вы можете посмотреть на сериализацию в зависимости от вашего использования.   -  person Haedrian    schedule 04.02.2014
comment
Я думаю, это первое, что вы сказали (текстовый файл с другим расширением), потому что вы должны иметь возможность прочитать его в Блокноте.   -  person Eric after dark    schedule 04.02.2014
comment
Ах, в этом случае это точно такая же обычная процедура, просто укажите имя файла с вашим расширением. Системе все равно, какое расширение вы даете. У вас может быть файл .abc или .a12, если хотите.   -  person Haedrian    schedule 05.02.2014
comment
Итак, почему мы снова не используем .txt?   -  person UIlrvnd    schedule 05.02.2014
comment
@Akane Потому что программа, которая получает этот файл, должна получить .dat   -  person Eric after dark    schedule 05.02.2014


Ответы (1)


Обратите внимание, что SaveFileDialog дает только имя файла, но фактически ничего не сохраняет.

var sfd = new SaveFileDialog {
    Filter = "Text Files (*.txt)|*.txt|All files (*.*)|*.*",
    // Set other options depending on your needs ...
};
if (sfd.ShowDialog() == true) { // Returns a bool?, therefore the == to convert it into bool.
    string filename = sfd.FileName;
    // Save the file ...
}

Используйте имя файла, полученное от SaveFileDialog, и сделайте следующее:

File.WriteAllText(filename, contents);

Это все, если вы собираетесь записывать текст в файл.

Вы также можете использовать:

File.WriteAllLines(filename, contentsAsStringArray);
person Olivier Jacot-Descombes    schedule 04.02.2014
comment
Разве ShowDialog не используется только для отображения окна SaveFileDialog? Я не думаю, что я получаю от него какое-либо имя файла. - person Eric after dark; 05.02.2014
comment
После того, как пользователь выбрал файл в SaveFileDialog и результатом является true, свойство FileName содержит полный путь к выбранному файлу. - person Olivier Jacot-Descombes; 05.02.2014
comment
Значит, все, что на самом деле делает SaveFileDialog, — это получает FileName и указывает место для его сохранения? - person Eric after dark; 05.02.2014
comment
Да, SaveFileDialog на самом деле получает только FileName! Есть несколько способов создать файл в .NET. - person Olivier Jacot-Descombes; 05.02.2014
comment
SaveFileDialog не может сохранить файл, так как не знает, каким должно быть содержимое этого файла. - person Olivier Jacot-Descombes; 18.06.2019