Как записать данные в текстовый файл на С#?

Я не могу понять, как использовать FileStream для записи данных в текстовый файл.. любая помощь будет большой.

Ответы

Ответ 1

Предполагая, что у вас уже есть данные:

string path = @"C:\temp\file"; // path to file
using (FileStream fs = File.Create(path)) 
{
        // writing data in string
        string dataasstring = "data"; //your data
        byte[] info = new UTF8Encoding(true).GetBytes(dataasstring);
        fs.Write(info, 0, info.Length);

        // writing data in bytes already
        byte[] data = new byte[] { 0x0 };
        fs.Write(data, 0, data.Length);
}

(взято из msdn docs и изменено)

Ответ 2

Документация для FileStream дает отличный пример. Короче говоря, вы создаете объект фильтра и используете объект Encoding.UTF8 (или кодировку, которую хотите использовать) для преобразования вашего открытого текста в байты, в котором вы можете использовать свой метод filestream.write. Но было бы проще использовать класс File и методы File.Append *.

EDIT: Пример

   File.AppendAllText("/path/to/file", "content here");

Ответ 3

Следующий код выдается из http://visualcsharptutorials.com/2011/02/writing-to-a-text-file/, но должен дать вам представление о том, как писать с FileStream.

using System;
using System.IO;
using System.Text;

namespace WritingToFile
{
    class Program
    {
        static void Main()
        {
            FileStream fs = new FileStream("sample.txt", FileMode.Create);
            StreamWriter writer = new StreamWriter(fs);
            StringBuilder output = new StringBuilder();
            int repeat = 0;

            do
            {
                Console.WriteLine("Please enter first name: ");
                output.Append(Console.ReadLine() + "#");
                Console.WriteLine("Please enter last name: ");
                output.Append(Console.ReadLine() + "#");
                Console.WriteLine("Please enter age: ");
                output.Append(Console.ReadLine());
                writer.WriteLine(output.ToString());
                output.Clear();
                Console.WriteLine("Repeat? 1-Yes, 0-No : ");
                repeat = Convert.ToInt32(Console.ReadLine());
            } while (repeat != 0);

            writer.Close();
        }
    }
}

Ответ 4

Из MSDN:

FileStream fs=new FileStream("c:\\Variables.txt", FileMode.Append, FileAccess.Write, FileShare.Write);
fs.Close();
StreamWriter sw=new StreamWriter("c:\\Variables.txt", true, Encoding.ASCII);
string NextLine="This is the appended line.";
sw.Write(NextLine);
sw.Close();

http://msdn.microsoft.com/en-us/library/system.io.filestream.aspx

Ответ 5

Предполагая, что ваши данные основаны на строках, это хорошо работает, изменило вашу обработку исключений, как вы сочтете нужным. Обязательно добавьте использование ссылок System.IO для TextWriter и StreamWriter.

с использованием System.IO;

        /// <summary>
        /// Writes a message to the specified file name.
        /// </summary>
        /// <param name="Message">The message to write.</param>
        /// <param name="FileName">The file name to write the message to.</param>
        public void LogMessage(string Message, string FileName)
        {
            try
            {
                using (TextWriter tw = new StreamWriter(FileName, true))
                {
                    tw.WriteLine(DateTime.Now.ToString() + " - " + Message);
                }
            }
            catch (Exception ex)  //Writing to log has failed, send message to trace in case anyone is listening.
            {
                System.Diagnostics.Trace.Write(ex.ToString());
            }
        }