Перейти к содержимому

Как создать текстовый файл в с

  • автор:

Использование Visual C# для чтения и записи в текстовый файл

В этой статье описано, как выполнить чтение и запись в текстовый файл с помощью Visual C#.

Оригинальная версия продукта: Visual Studio
Оригинальный номер базы знаний: 816149

Сводка

В разделе Чтение текстового файла этой статьи описывается, как использовать класс StreamReader для чтения текстового файла. В разделах Запись в текстовый файл (пример 1) и Запись в текстовый файл (пример 2) описывается, как использовать класс StreamWriter для записи текста в файл.

Чтение текстового файла

В следующем коде используется класс StreamReader для открытия, чтения и закрытия текстового файла. Можно передать путь к текстовому файлу в конструктор StreamReader для автоматического открытия файла. Метод ReadLine считывает каждую строку текста и перемещает указатель файла на следующую строку по мере чтения. Если метод ReadLine достигает конца файла, он возвращает пустую ссылку. Дополнительные сведения см. в разделе Класс StreamReader.

  1. Создайте пример текстового файла в Блокноте. Выполните приведенные ниже действия.
    1. Вставьте текст hello world в Блокнот.
    2. Сохраните файл как Sample.txt.
    using System.IO; 
    String line; try < //Pass the file path and file name to the StreamReader constructor StreamReader sr = new StreamReader("C:\\Sample.txt"); //Read the first line of text line = sr.ReadLine(); //Continue to read until you reach end of file while (line != null) < //write the line to console window Console.WriteLine(line); //Read the next line line = sr.ReadLine(); >//close the file sr.Close(); Console.ReadLine(); > catch(Exception e) < Console.WriteLine("Exception: " + e.Message); >finally
    Hello world 

    Запись в текстовый файл (пример 1)

    В следующем коде используется класс StreamWriter для открытия, записи и закрытия текстового файла. Аналогично тому, как используется класс StreamReader , можно передать путь к текстовому файлу в конструктор StreamWriter для автоматического открытия файла. Метод WriteLine записывает всю текстовую строку в текстовый файл.

    1. Запустите Visual Studio.
    2. В меню Файл выберите пункт Создать, а затем выберите Проект.
    3. Выберите Проекты Visual C# в разделе Типы проектов, а затем выберите Консольное приложение в разделе Шаблоны.
    4. Добавьте следующий код в начало файла Class1.cs:

    using System.IO; 
    try < //Pass the filepath and filename to the StreamWriter Constructor StreamWriter sw = new StreamWriter("C:\\Test.txt"); //Write a line of text sw.WriteLine("Hello World!!"); //Write a second line of text sw.WriteLine("From the StreamWriter class"); //Close the file sw.Close(); >catch(Exception e) < Console.WriteLine("Exception: " + e.Message); >finally
    Hello World!! From the StreamWriter class 

    Запись в текстовый файл (пример 2)

    В следующем коде используется класс StreamWriter для открытия, записи и закрытия текстового файла. В отличие от предыдущего примера, этот код передает в конструктор два дополнительных параметра. Первый параметр — путь к файлу и имя файла. Второй параметр, true , указывает, что файл открыт в режиме добавления. Если вы задаете false для второго параметра, содержимое файла перезаписывается при каждом запуске кода. Третий параметр задает Unicode , чтобы кодирование файла в StreamWriter выполнялось в формате Юникода. Можно также указать следующие методы кодирования для третьего параметра:

    Метод Write аналогичен методу WriteLine , за исключением того, что метод Write не вставляет автоматически сочетание символов возврата каретки или перевода строки (CR/LF). Это полезно, когда нужно одновременно записывать по одному символу.

    1. Запустите Visual Studio.
    2. В меню Файл выберите пункт Создать и затем пункт Проект.
    3. Нажмите Проекты Visual C# в разделе Типы проектов, а затем нажмите Консольное приложение в разделе Шаблоны.
    4. Добавьте следующий код в начало файла Class1.cs:

    using System.IO; using System.Text; 
    Int64 x; try < //Open the File StreamWriter sw = new StreamWriter("C:\\Test1.txt", true, Encoding.ASCII); //Write out the numbers 1 to 10 on the same line. for(x=0; x < 10; x++) < sw.Write(x); >//close the file sw.Close(); > catch(Exception e) < Console.WriteLine("Exception: " + e.Message); >finally

    Полный код сборки для чтения текстового файла

    //Read a Text File using System; using System.IO; namespace readwriteapp < class Class1 < [STAThread] static void Main(string[] args) < String line; try < //Pass the file path and file name to the StreamReader constructor StreamReader sr = new StreamReader("C:\\Sample.txt"); //Read the first line of text line = sr.ReadLine(); //Continue to read until you reach end of file while (line != null) < //write the line to console window Console.WriteLine(line); //Read the next line line = sr.ReadLine(); >//close the file sr.Close(); Console.ReadLine(); > catch(Exception e) < Console.WriteLine("Exception: " + e.Message); >finally < Console.WriteLine("Executing finally block."); >> > > 

    Полный код сборки для записи в текстовый файл (версия 1)

    //Write a text file - Version-1 using System; using System.IO; namespace readwriteapp < class Class1 < [STAThread] static void Main(string[] args) < try < //Pass the filepath and filename to the StreamWriter Constructor StreamWriter sw = new StreamWriter("C:\\Test.txt"); //Write a line of text sw.WriteLine("Hello World!!"); //Write a second line of text sw.WriteLine("From the StreamWriter class"); //Close the file sw.Close(); >catch(Exception e) < Console.WriteLine("Exception: " + e.Message); >finally < Console.WriteLine("Executing finally block."); >> > > 

    Полный код сборки для записи в текстовый файл (версия 2)

    //Write a text file - Version 2 using System; using System.IO; using System.Text; namespace readwriteapp < class Class1 < [STAThread] static void Main(string[] args) < Int64 x; try < //Open the File StreamWriter sw = new StreamWriter("C:\\Test1.txt", true, Encoding.ASCII); //Writeout the numbers 1 to 10 on the same line. for(x=0; x < 10; x++) < sw.Write(x); >//close the file sw.Close(); > catch(Exception e) < Console.WriteLine("Exception: " + e.Message); >finally < Console.WriteLine("Executing finally block."); >> > > 

    Устранение неполадок

    Перенос кода в блок try-catch-finally для обработки ошибок и исключений является хорошей практикой программирования, когда речь заходит о выполнении любых операций с файлом. В частности, может потребоваться освободить дескрипторы файла в окончательном блоке, чтобы файл не был заблокирован на неопределенный срок. Некоторые возможные ошибки включают файл, который не существует, или файл, который уже используется.

    Обратная связь

    Были ли сведения на этой странице полезными?

    Как создать текстовый файл в с

    Класс FileStream представляет возможности по считыванию из файла и записи в файл. Он позволяет работать как с текстовыми файлами, так и с бинарными.

    Создание FileStream

    Для создания объекта FileStream можно использовать как конструкторы этого класса, так и статические методы класса File. Конструктор FileStream имеет множество перегруженных версий, из которых отмечу лишь одну, самую простую и используемую:

    FileStream(string filename, FileMode mode)

    Здесь в конструктор передается два параметра: путь к файлу и перечисление FileMode . Данное перечисление указывает на режим доступа к файлу и может принимать следующие значения:

    • Append : если файл существует, то текст добавляется в конец файл. Если файла нет, то он создается. Файл открывается только для записи.
    • Create : создается новый файл. Если такой файл уже существует, то он перезаписывается
    • CreateNew : создается новый файл. Если такой файл уже существует, то приложение выбрасывает ошибку
    • Open : открывает файл. Если файл не существует, выбрасывается исключение
    • OpenOrCreate : если файл существует, он открывается, если нет — создается новый
    • Truncate : если файл существует, то он перезаписывается. Файл открывается только для записи.

    Другой способ создания объекта FileStream представляют статические методы класса File:

    FileStream File.Open(string file, FileMode mode); FileStream File.OpenRead(string file); FileStream File.OpenWrite(string file);

    Первый метод открывает файл с учетом объекта FileMode и возвращает файловой поток FileStream. У этого метода также есть несколько перегруженных версий. Второй метод открывает поток для чтения, а третий открывает поток для записи.

    Закрытие потока

    Класс FileStream для освобождения всех реусрсов, связанных с файлом, реализует интерфейс IDisposable. Соответственно после завершения работы с FileStream необходимо освободить связанный с ним файл вызовом метода Dispose. Для корректного закрытия можно вызвать метод Close() , который вызывает метод Dispose:

    FileStream? fstream = null; try < fstream = new FileStream("note3.dat", FileMode.OpenOrCreate); // операции с fstream >catch(Exception ex) < >finally

    Либо можно использовать конструкцию using, которая автоматически освободит все связанные с FileStream ресурсы:

    using (FileStream fstream = new FileStream("note3.dat", FileMode.OpenOrCreate)) < // операции с fstream >

    Свойства и методы FileStream

    Рассмотрим наиболее важные свойства класса FileStream :

    • Свойство Length : возвращает длину потока в байтах
    • Свойство Position : возвращает текущую позицию в потоке
    • Свойство Name : возвращает абсолютный путь к файлу, открытому в FileStream

    Для чтения/записи файлов можно применять следующие методы класса FileStream :

    • void CopyTo(Stream destination) : копирует данные из текущего потока в поток destination
    • Task CopyToAsync(Stream destination) : асинхронная версия метода CopyTo
    • void Flush() : сбрасывает содержимое буфера в файл
    • Task FlushAsync() : асинхронная версия метода Flush
    • int Read(byte[] array, int offset, int count) : считывает данные из файла в массив байтов и возвращает количество успешно считанных байтов. Принимает три параметра:
      • array — массив байтов, куда будут помещены считываемые из файла данные
      • offset представляет смещение в байтах в массиве array, в который считанные байты будут помещены
      • count — максимальное число байтов, предназначенных для чтения. Если в файле находится меньшее количество байтов, то все они будут считаны.
      • Task ReadAsync(byte[] array, int offset, int count) : асинхронная версия метода Read
      • array — массив байтов, откуда данные будут записываться в файл
      • offset — смещение в байтах в массиве array, откуда начинается запись байтов в поток
      • count — максимальное число байтов, предназначенных для записи

      Чтение и запись файлов

      FileStream представляет доступ к файлам на уровне байтов, поэтому, например, если вам надо считать или записать одну или несколько строк в текстовый файл, то массив байтов надо преобразовать в строки, используя специальные методы. Поэтому для работы с текстовыми файлами применяются другие классы.

      В то же время при работе с различными бинарными файлами, имеющими определенную структуру, FileStream может быть очень даже полезен для извлечения определенных порций информации и ее обработки.

      Посмотрим на примере считывания-записи в текстовый файл:

      using System.Text; string path = @"C:\app\note.txt"; // путь к файлу string text = "Hello METANIT.COM"; // строка для записи // запись в файл using (FileStream fstream = new FileStream(path, FileMode.OpenOrCreate)) < // преобразуем строку в байты byte[] buffer = Encoding.Default.GetBytes(text); // запись массива байтов в файл await fstream.WriteAsync(buffer, 0, buffer.Length); Console.WriteLine("Текст записан в файл"); >// чтение из файла using (FileStream fstream = File.OpenRead(path)) < // выделяем массив для считывания данных из файла byte[] buffer = new byte[fstream.Length]; // считываем данные await fstream.ReadAsync(buffer, 0, buffer.Length); // декодируем байты в строку string textFromFile = Encoding.Default.GetString(buffer); Console.WriteLine($"Текст из файла: "); >

      Разберем этот пример. Вначале определяем путь к файлу и текст для записи в файл.

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

      Поскольку операции с файлами могут занимать продолжительное время и являются узким местом в работе программы, рекомендуется использовать асинхронные версии методов FileStream. И при записи, и при чтении применяется объект кодировки Encoding.Default из пространства имен System.Text . В данном случае мы используем два его метода: GetBytes для получения массива байтов из строки и GetString для получения строки из массива байтов.

      В итоге введенная нами строка записывается в файл note.txt . И мы получим следующий консольный вывод:

      Текст записан в файл Текст из файла: Hello METANIT.COM

      Записанный файл по сути представляет бинарный файл (не текстовый), хотя если мы в него запишем только строку, то сможем посмотреть в удобочитаемом виде этот файл, открыв его в текстовом редакторе. Однако если мы в него запишем случайные байты, например:

      fstream.WriteByte(13); fstream.WriteByte(103);

      То у нас могут возникнуть проблемы с его пониманием. Поэтому для работы непосредственно с текстовыми файлами предназначены отдельные классы — StreamReader и StreamWriter.

      Произвольный доступ к файлам

      Нередко бинарные файлы представляют определенную структуру. И, зная эту структуру, мы можем взять из файла нужную порцию информации или наоброт записать в определенном месте файла определенный набор байтов. Например, в wav-файлах непосредственно звуковые данные начинаются с 44 байта, а до 44 байта идут различные метаданные — количество каналов аудио, частота дискретизации и т.д.

      С помощью метода Seek() мы можем управлять положением курсора потока, начиная с которого производится считывание или запись в файл. Этот метод принимает два параметра: offset (смещение) и позиция в файле. Позиция в файле описывается тремя значениями:

      • SeekOrigin.Begin : начало файла
      • SeekOrigin.End : конец файла
      • SeekOrigin.Current : текущая позиция в файле

      Курсор потока, с которого начинается чтение или запись, смещается вперед на значение offset относительно позиции, указанной в качестве второго параметра. Смещение может быть отрицательным, тогда курсор сдвигается назад, если положительное — то вперед.

      Рассмотрим простой пример:

      using System.Text; string path = "note.dat"; string text = "hello world"; using (FileStream fstream = new FileStream(path, FileMode.OpenOrCreate)) < // преобразуем строку в байты byte[] input = Encoding.Default.GetBytes(text); // запись массива байтов в файл fstream.Write(input, 0, input.Length); Console.WriteLine("Текст записан в файл"); >// чтение части файла using (FileStream fstream = new FileStream(path, FileMode.OpenOrCreate)) < // перемещаем указатель в конец файла, до конца файла- пять байт fstream.Seek(-5, SeekOrigin.End); // минус 5 символов с конца потока // считываем четыре символов с текущей позиции byte[] output = new byte[5]; await fstream.ReadAsync(output, 0, output.Length); // декодируем байты в строку string textFromFile = Encoding.Default.GetString(output); Console.WriteLine($"Текст из файла: "); // world >

      Вначале записываем в файл текст «hello world». Затем снова обращаемся к файла для считывания. Сначала перемещаем курсор на пять символов назад относительно конца файлового потока:

      fstream.Seek(-5, SeekOrigin.End)

      чтение и запись файлов через FileStream в C#

      То есть после выполнения этого вызова курсор будет стоять на позиции символа «w».

      После этого считываем пять байт начиная с символа «w». В кодировке по умолчанию 1 символ будет представлять 1 байт. Поэтому чтение 5 байт будет эквивалентно чтению пяти сиволов: «world».

      Соответственно мы получим следующий консольный вывод:

      Текст записан в файл Текст из файла: world

      Рассмотрим чуть более сложный пример — с записью начиная с некоторой позиции:

      using System.Text; string path = "note2.dat"; string text = "hello world"; // запись в файл using (FileStream fstream = new FileStream(path, FileMode.OpenOrCreate)) < // преобразуем строку в байты byte[] input = Encoding.Default.GetBytes(text); // запись массива байтов в файл fstream.Write(input, 0, input.Length); Console.WriteLine("Текст записан в файл"); >using (FileStream fstream = new FileStream(path, FileMode.OpenOrCreate)) < // заменим в файле слово world на слово house string replaceText = "house"; fstream.Seek(-5, SeekOrigin.End); // минус 5 символов с конца потока byte[] input = Encoding.Default.GetBytes(replaceText); await fstream.WriteAsync(input, 0, input.Length); // считываем весь файл // возвращаем указатель в начало файла fstream.Seek(0, SeekOrigin.Begin); byte[] output = new byte[fstream.Length]; await fstream.ReadAsync(output, 0, output.Length); // декодируем байты в строку string textFromFile = Encoding.Default.GetString(output); Console.WriteLine($"Текст из файла: "); // hello house >

      Здесь также вначале записываем в файл строку «hello world». Затем также открываем файл и опять же перемещаемся в конец файла, не доходя до конца пять символов (то есть опять же с позиции символа «w»), и осуществляем запись строки «house». Таким образом, строка «house» заменяет строку «world».

      Чтобы после этого считать весь файл, сдвигаем курсор на самое начало

      fstream.Seek(0, SeekOrigin.Begin);

      Консольный вывод программы:

      Текст записан в файл Текст из файла: hello house

      File. Create Метод

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

      Создает или усекает и перезаписывает файл по указанному пути.

      Перегрузки

      Создает или перезаписывает файл по заданному пути с указанием размера буфера и параметров, которые описывают, как создавать или перезаписывать файл. Также указывается значение, определяющее контроль доступа и безопасность аудита для файла.

      Создает или перезаписывает файл по заданному пути с указанием размера буфера и параметров, которые описывают, как создавать или перезаписывать файл.

      Создает или усекает и перезаписывает файл по указанному пути.

      Создает или усекает и перезаписывает файл по указанному пути, указывая размер буфера.

      Create(String, Int32, FileOptions, FileSecurity)

      Создает или перезаписывает файл по заданному пути с указанием размера буфера и параметров, которые описывают, как создавать или перезаписывать файл. Также указывается значение, определяющее контроль доступа и безопасность аудита для файла.

      public: static System::IO::FileStream ^ Create(System::String ^ path, int bufferSize, System::IO::FileOptions options, System::Security::AccessControl::FileSecurity ^ fileSecurity);
      public static System.IO.FileStream Create (string path, int bufferSize, System.IO.FileOptions options, System.Security.AccessControl.FileSecurity fileSecurity);
      static member Create : string * int * System.IO.FileOptions * System.Security.AccessControl.FileSecurity -> System.IO.FileStream
      Public Shared Function Create (path As String, bufferSize As Integer, options As FileOptions, fileSecurity As FileSecurity) As FileStream
      Параметры

      Путь и имя создаваемого файла.

      bufferSize Int32

      Число байтов, буферизируемых при чтении и записи в данный файл.

      Одно из значений FileOptions, которое описывает, как создавать или перезаписывать файл.

      fileSecurity FileSecurity

      Объект FileSecurity, определяющий правила управления доступом и аудита безопасности для файла.

      Возвращаемое значение

      Новый файл с заданным размером буфера, параметрами файла и уровнем безопасности.

      Исключения

      У вызывающего объекта отсутствует необходимое разрешение.

      Параметр path указывает файл, доступный только для чтения.

      path указывает файл, который скрыт.

      платформа .NET Framework и .NET Core версий старше 2.1: path строка нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов. Вы можете запросить недопустимые символы с помощью метода GetInvalidPathChars().

      path имеет значение null .

      Указанный путь, имя файла или оба значения превышают максимальную длину, заданную в системе.

      Указан недопустимый путь (например, он ведет на несопоставленный диск).

      Ошибка ввода-вывода при создании файла.

      Параметр path задан в недопустимом формате.

      Комментарии

      Параметр path может указывать относительные или абсолютные сведения о пути. Сведения об относительном пути интерпретируются как относительные относительно текущего рабочего каталога. Сведения о том, как получить текущий рабочий каталог, см. в разделе GetCurrentDirectory.

      Этот метод эквивалентен перегрузке конструктора FileStream(String, FileMode, FileAccess, FileShare, Int32) . Если указанный файл не существует, он создается; Если он существует и не доступен только для чтения, содержимое заменяется.

      По умолчанию полный доступ на чтение и запись к новым файлам предоставляется всем пользователям. Файл открывается с доступом на чтение и запись и должен быть закрыт, прежде чем его сможет открыть другое приложение.

      Список распространенных задач ввода-вывода см. в разделе Общие задачи ввода-вывода.

      Применяется к

      Create(String, Int32, FileOptions)

      Создает или перезаписывает файл по заданному пути с указанием размера буфера и параметров, которые описывают, как создавать или перезаписывать файл.

      public: static System::IO::FileStream ^ Create(System::String ^ path, int bufferSize, System::IO::FileOptions options);
      public static System.IO.FileStream Create (string path, int bufferSize, System.IO.FileOptions options);
      static member Create : string * int * System.IO.FileOptions -> System.IO.FileStream
      Public Shared Function Create (path As String, bufferSize As Integer, options As FileOptions) As FileStream
      Параметры

      Путь и имя создаваемого файла.

      bufferSize Int32

      Число байтов, буферизируемых при чтении и записи в данный файл.

      Одно из значений FileOptions, которое описывает, как создавать или перезаписывать файл.

      Возвращаемое значение

      Новый файл с заданным размером буфера.

      Исключения

      У вызывающего объекта отсутствует необходимое разрешение.

      Параметр path указывает файл, доступный только для чтения.

      path указывает файл, который скрыт.

      платформа .NET Framework и .NET Core версий старше 2.1: path строка нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов. Вы можете запросить недопустимые символы с помощью метода GetInvalidPathChars().

      path имеет значение null .

      Указанный путь, имя файла или оба значения превышают максимальную длину, заданную в системе.

      Указан недопустимый путь (например, он ведет на несопоставленный диск).

      Ошибка ввода-вывода при создании файла.

      Параметр path задан в недопустимом формате.

      Комментарии

      Параметр path может указывать относительные или абсолютные сведения о пути. Сведения об относительном пути интерпретируются как относительные относительно текущего рабочего каталога. Сведения о том, как получить текущий рабочий каталог, см. в разделе GetCurrentDirectory.

      Этот метод эквивалентен перегрузке конструктора FileStream(String, FileMode, FileAccess, FileShare, Int32) . Если указанный файл не существует, он создается; Если он существует и не доступен только для чтения, содержимое заменяется.

      По умолчанию полный доступ на чтение и запись к новым файлам предоставляется всем пользователям. Файл открывается с доступом на чтение и запись и должен быть закрыт, прежде чем его сможет открыть другое приложение.

      Список распространенных задач ввода-вывода см. в разделе Общие задачи ввода-вывода.

      Применяется к

      Create(String)

      Создает или усекает и перезаписывает файл по указанному пути.

      public: static System::IO::FileStream ^ Create(System::String ^ path);
      public static System.IO.FileStream Create (string path);
      static member Create : string -> System.IO.FileStream
      Public Shared Function Create (path As String) As FileStream
      Параметры

      Путь и имя создаваемого файла.

      Возвращаемое значение

      FileStream, обеспечивающий доступ для чтения и записи к файлу, указанному в path .

      Исключения

      У вызывающего объекта отсутствует необходимое разрешение.

      Параметр path указывает файл, доступный только для чтения.

      path указывает файл, который скрыт.

      платформа .NET Framework и .NET Core версий старше 2.1: path строка нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов. Вы можете запросить недопустимые символы с помощью метода GetInvalidPathChars().

      path имеет значение null .

      Указанный путь, имя файла или оба значения превышают максимальную длину, заданную в системе.

      Указан недопустимый путь (например, он ведет на несопоставленный диск).

      Ошибка ввода-вывода при создании файла.

      Параметр path задан в недопустимом формате.

      Примеры

      В следующем примере создается файл по указанному пути, записывается некоторая информация в файл и выполняется чтение из файла.

      using namespace System; using namespace System::IO; using namespace System::Text; int main() < String^ path = "c:\\temp\\MyTest.txt"; // Create the file, or overwrite if the file exists. FileStream^ fs = File::Create( path ); try < array^info = (gcnew UTF8Encoding( true ))->GetBytes( "This is some text in the file." ); // Add some information to the file. fs->Write( info, 0, info->Length ); > finally < if ( fs ) delete (IDisposable^)fs; >// Open the stream and read it back. StreamReader^ sr = File::OpenText( path ); try < String^ s = ""; while ( s = sr->ReadLine() ) < Console::WriteLine( s ); >> finally < if ( sr ) delete (IDisposable^)sr; >> 
      using System; using System.IO; using System.Text; class Test < public static void Main() < string path = @"c:\temp\MyTest.txt"; try < // Create the file, or overwrite if the file exists. using (FileStream fs = File.Create(path)) < byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file."); // Add some information to the file. fs.Write(info, 0, info.Length); >// Open the stream and read it back. using (StreamReader sr = File.OpenText(path)) < string s = ""; while ((s = sr.ReadLine()) != null) < Console.WriteLine(s); >> > catch (Exception ex) < Console.WriteLine(ex.ToString()); >> > 
      open System.IO open System.Text let path = @"c:\temp\MyTest.txt" // Create the file, or overwrite if the file exists. do use fs = File.Create path let info = UTF8Encoding(true) .GetBytes "This is some text in the file." // Add some information to the file. fs.Write(info, 0, info.Length) // Open the stream and read it back. do use sr = File.OpenText path let mutable s = sr.ReadLine() while isNull s |> not do printfn $"" s  
      Imports System.IO Imports System.Text Public Class Test Public Shared Sub Main() Dim path As String = "c:\temp\MyTest.txt" Try ' Create the file, or overwrite if the file exists. Using fs As FileStream = File.Create(path) Dim info As Byte() = New UTF8Encoding(True).GetBytes("This is some text in the file.") ' Add some information to the file. fs.Write(info, 0, info.Length) End Using ' Open the stream and read it back. Using sr As StreamReader = File.OpenText(path) Do While sr.Peek() >= 0 Console.WriteLine(sr.ReadLine()) Loop End Using Catch ex As Exception Console.WriteLine(ex.ToString()) End Try End Sub End Class 

      Комментарии

      ОбъектFileStream, созданный этим методом, имеет значение Noneпо умолчанию FileShare ; никакие другие процессы или код не могут получить доступ к созданному файлу, пока исходный дескриптор файла не будет закрыт.

      Этот метод эквивалентен перегрузке Create(String, Int32) метода с размером буфера по умолчанию 4096 байт.

      Параметр path может указывать относительные или абсолютные сведения о пути. Сведения об относительном пути интерпретируются как относительные относительно текущего рабочего каталога. Сведения о том, как получить текущий рабочий каталог, см. в разделе GetCurrentDirectory.

      Если указанный файл не существует, он создается; Если он существует и не доступен только для чтения, содержимое удаляется и перезаписывается.

      По умолчанию полный доступ на чтение и запись к новым файлам предоставляется всем пользователям. Файл открывается с доступом на чтение и запись и должен быть закрыт, прежде чем его сможет открыть другое приложение.

      Список распространенных задач ввода-вывода см. в разделе Общие задачи ввода-вывода.

      См. также раздел

      • Файловый и потоковый ввод-вывод
      • Чтение текста из файла
      • Практическое руководство. Запись текста в файл
      • Практическое руководство. Считывание данных из нового файла и запись в этот файл

      Применяется к

      Create(String, Int32)

      Создает или усекает и перезаписывает файл по указанному пути, указывая размер буфера.

      public: static System::IO::FileStream ^ Create(System::String ^ path, int bufferSize);
      public static System.IO.FileStream Create (string path, int bufferSize);
      static member Create : string * int -> System.IO.FileStream
      Public Shared Function Create (path As String, bufferSize As Integer) As FileStream
      Параметры

      Путь и имя создаваемого файла.

      bufferSize Int32

      Число байтов, буферизируемых при чтении и записи в данный файл.

      Возвращаемое значение

      FileStream с заданным размером буфера, который обеспечивает доступ для чтения и записи к файлу, указанному в path .

      Исключения

      У вызывающего объекта отсутствует необходимое разрешение.

      Параметр path указывает файл, доступный только для чтения.

      path указывает файл, который скрыт.

      платформа .NET Framework и .NET Core версий старше 2.1: path строка нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов. Вы можете запросить недопустимые символы с помощью метода GetInvalidPathChars().

      path имеет значение null .

      Указанный путь, имя файла или оба значения превышают максимальную длину, заданную в системе.

      Указан недопустимый путь (например, он ведет на несопоставленный диск).

      Ошибка ввода-вывода при создании файла.

      Параметр path задан в недопустимом формате.

      Примеры

      В следующем примере создается файл с указанным размером буфера.

      using namespace System; using namespace System::IO; using namespace System::Text; int main() < String^ path = "c:\\temp\\MyTest.txt"; // Create the file, or overwrite if the file exists. FileStream^ fs = File::Create( path, 1024 ); try < array^info = (gcnew UTF8Encoding( true ))->GetBytes( "This is some text in the file." ); // Add some information to the file. fs->Write( info, 0, info->Length ); > finally < if ( fs ) delete (IDisposable^)fs; >// Open the stream and read it back. StreamReader^ sr = File::OpenText( path ); try < String^ s = ""; while ( s = sr->ReadLine() ) < Console::WriteLine( s ); >> finally < if ( sr ) delete (IDisposable^)sr; >> 
      using System; using System.IO; using System.Text; class Test < public static void Main() < string path = @"c:\temp\MyTest.txt"; // Create the file, or overwrite if the file exists. using (FileStream fs = File.Create(path, 1024)) < byte[] info = new UTF8Encoding(true).GetBytes("This is some text in the file."); // Add some information to the file. fs.Write(info, 0, info.Length); >// Open the stream and read it back. using (StreamReader sr = File.OpenText(path)) < string s = ""; while ((s = sr.ReadLine()) != null) < Console.WriteLine(s); >> > > 
      open System.IO open System.Text let path = @"c:\temp\MyTest.txt" // Create the file, or overwrite if the file exists. do use fs = File.Create(path, 1024) let info = UTF8Encoding(true) .GetBytes "This is some text in the file." // Add some information to the file. fs.Write(info, 0, info.Length) // Open the stream and read it back. do use sr = File.OpenText path let mutable s = sr.ReadLine() while isNull s |> not do printfn $"" s  
      Imports System.IO Imports System.Text Public Class Test Public Shared Sub Main() Dim path As String = "c:\temp\MyTest.txt" Try ' Create the file, or overwrite if the file exists. Using fs As FileStream = File.Create(path, 1024) Dim info As Byte() = New UTF8Encoding(True).GetBytes("This is some text in the file.") ' Add some information to the file. fs.Write(info, 0, info.Length) End Using ' Open the stream and read it back. Using sr As StreamReader = File.OpenText(path) Do While sr.Peek() >= 0 Console.WriteLine(sr.ReadLine()) Loop End Using Catch ex As Exception Console.WriteLine(ex.ToString()) End Try End Sub End Class 

      Комментарии

      ОбъектFileStream, созданный этим методом, имеет значение Noneпо умолчанию FileShare ; никакие другие процессы или код не могут получить доступ к созданному файлу, пока исходный дескриптор файла не будет закрыт.

      Параметр path может указывать относительные или абсолютные сведения о пути. Сведения об относительном пути интерпретируются как относительные относительно текущего рабочего каталога. Сведения о том, как получить текущий рабочий каталог, см. в разделе GetCurrentDirectory.

      Этот метод эквивалентен перегрузке конструктора FileStream(String, FileMode, FileAccess, FileShare, Int32) . Если указанный файл не существует, он создается; Если он существует и не доступен только для чтения, содержимое заменяется.

      По умолчанию полный доступ на чтение и запись к новым файлам предоставляется всем пользователям. Файл открывается с доступом на чтение и запись и должен быть закрыт, прежде чем его сможет открыть другое приложение.

      Список распространенных задач ввода-вывода см. в разделе Общие задачи ввода-вывода.

      См. также раздел

      • Файловый и потоковый ввод-вывод
      • Чтение текста из файла
      • Практическое руководство. Запись текста в файл
      • Практическое руководство. Считывание данных из нового файла и запись в этот файл

      Visual Studio. Как добавить .txt файл?

      Задача:
      Есть проект, в него надо добавить текстовый файл(Readme.txt) и, соответственно, заполнить его. Что-то не могу догнать, можно ли это сделать средствами такого распиаренного Visual Studio(до этого сидел на Rider, там это делается в 2 клика - ПКМ->добавить файл).

      • Вопрос задан более трёх лет назад
      • 9704 просмотра

      Комментировать

      Решения вопроса 1

      Rem_u

      Эх, как же хочется худенькую, бледную, не очень.

      ПКМ пр проекту - добавить - создать элемент - текстовый файл. он будет лежать в C:\Users\User\source\repos\WindowsFormsApp1\WindowsFormsApp1 где и папка bin (это всё по стандарту) полный путь, содержание, настройка отношения файла к процессам сборки и внедрения, имя файла и ещё 2 пункта можно изменить в самом Visual Studio.

      Ответ написан более трёх лет назад

      Комментировать

      Нравится Комментировать

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *