Пространство имен System.IO

Пространство имен System.IO в .NET — это область библиотек базовых классов, посвященная службам файлового ввода-вывода, а также ввода-вывода из памяти. Подобно любому пространству имен, в System.IO определен набор классов, интерфейсов, перечислений, структур и делегатов, большинство из которых находятся в mscorlib.dll. В дополнение к типам, содержащимся внутри mscorlib.dll, в сборке System.dll определены дополнительные члены пространства имен System.IO. Обратите внимание, что все проекты Visual Studio 2010 автоматически устанавливают ссылки на обе сборки.
Многие типы из пространства имен System.IO сосредоточены на программных манипуляциях физическими каталогами и файлами. Дополнительные типы предоставляют поддержку чтения и записи данных в строковые буферы, а также области памяти. Ниже кратко описаны основные (неабстрактные) классы, которые дают понятие о функциональности System.IO:
BinaryReader, BinaryWriter
Эти классы позволяют сохранять и извлекать элементарные типы данных (целочисленные, булевские, строковые и т.п.) в двоичном виде
BufferedStream
Этот класс предоставляет временное хранилище для потока байтов, которые могут затем быть перенесены в постоянные хранилища
Directory, DirectoryInfo
Эти классы используются для манипуляций структурой каталогов машины. Тип Directory представляет функциональность, используя статические члены. Тип DirectoryInfo обеспечивает аналогичную функциональность через действительную объектную ссылку
DriveInfo
Этот класс предоставляет детальную информацию относительно дисковых устройств, используемых данной машиной
File, FileInfo
Эти классы служат для манипуляций множеством файлов данной машины. Тип File представляет функциональность через статические члены. Тип FileInfo обеспечивает аналогичную функциональность через действительную объектную ссылку
FileStream
Этот класс обеспечивает произвольный доступ к файлу (т.е. возможности поиска) с данными, представленными в виде потока байт
FileSystemWatcher
Этот класс позволяет отслеживать модификации внешних файлов в определенном каталоге
MemoryStream
Этот класс обеспечивает произвольный доступ к данным, хранящимся в памяти, а не в физическом файле
Path
Этот класс выполняет операции над типами System.String, содержащими информацию о пути к файлу или каталогу в независимой от платформы манере
StreamWriter, StreamReader
Эти классы используются для хранения (и извлечения) текстовой информации из файла. Эти классы не поддерживают произвольного доступа к файлу
StringWriter, StringReader
Подобно классам StreamWriter/StreamReader, эти классы также работают с текстовой информацией. Однако лежащим в основе хранилищем является строковый буфер, а не физический файл
В дополнение к этим конкретным типам классов в System.IO определено несколько перечислений, а также набор абстрактных классов (т.е. Stream, TextReader и TextWriter), которые определяют разделяемый полиморфный интерфейс для всех наследников.
Как не трудно было заметить в приведенном выше списке, для представления файлов и папок используются по два класса. Какой из них применять — во многом зависит от того, сколько раз требуется получить доступ к данной папке или файлу.
- Классы Directory и File содержат только статические методы, а их экземпляры никогда не создаются. Для их использования нужно просто предоставить путь к интересующему объекту файловой системы при каждом вызове метода-члена. Если требуется выполнить только одну операцию в отношении папки или файла, то применение этих классов является наиболее эффективным подходом, поскольку позволяет избегать накладных расходов, связанных с созданием экземпляров.
- Классы DirectoryInfo и FileInfo реализуют практически те же общедоступные методы, что и Directory и File, а также некоторые общедоступные свойства и конструкторы, но поддерживают состояние, а их члены не являются статическими. Сначала понадобится создать их экземпляр, который затем ассоциировать с определенной папкой или файлом. Это означает, что применение этих классов будет более эффективным подходом, если необходимо выполнять множество операций в отношении одного и того же объекта. Дело в том, что во время создания они считывают информацию об аутентификации и прочие сведения о соответствующем объекте файловой системы и больше не нуждаются в ее повторном чтении, сколько бы методов не вызывалось для данного объекта (экземпляра класса). В отличие от этого, классы, не поддерживающие состояние, нуждаются в проверке деталей, связанных с файлом или папкой, при каждом вызове какого-либо метода.
Обратите внимание на рисунке, что классы Directory и File непосредственно расширяют System.Object, в то время как DirectoryInfo и FileInfo наследуются от абстрактного класса FileSystemInfo:

Классы DirectoryInfo и FileInfo унаследовали значительную часть своего поведения от абстрактного базового класса FileSystemInfo. По большей части члены класса FileSystemInfo используются для получения общих характеристик (таких как время создания, различные атрибуты и т.д.) определенного файла или каталога. В таблице ниже перечислены некоторые основные свойства, представляющие интерес:
| Свойство | Назначение |
| Attributes | Получает или устанавливает ассоциированные с текущим файлом атрибуты, которые представлены перечислением FileAttributes (доступный только для чтения, зашифрованный, скрытый или сжатый) |
| CreationTime | Получает или устанавливает время создания текущего файла или каталога |
| Exists | Может использоваться для определения, существует ли данный файл или каталог |
| Extension | Извлекает расширение файла |
| FullName | Получает полный путь к файлу или каталогу |
| LastAccessTime | Получает или устанавливает время последнего доступа к текущему файлу или каталогу |
| LastWriteTime | Получает или устанавливает время последней записи в текущий файл или каталог |
| Name | Получает имя текущего файла или каталога |
В классе FileSystemInfo также определен метод Delete(). Этот метод реализуется производными типами для удаления файла или каталога с жесткого диска. Кроме того, метод Refresh() может быть вызван перед получением информации об атрибутах, чтобы обеспечить актуальность состояния статистики о текущем файле или каталоге.
Using system io c что это
![]()
PetarV → Codeforces Round #169 — Unofficial Editorial
MikeMirzayanov → Codeforces Single Account Policy: zh0ukangyang is Removed from the Rating
![]()
AC_AC → CSES DP SECTION — Book Shop
Hexagons → [OFF TOPIC] Hollow Knight radiant tutorial for bossfight «Markoth»
![]()
Gheal → Codeforces Round #833 (Div. 2) Editorial
stefdasca → Easy and Quick Video Tutorials for the CSES Problem Set
vrintle → Invitation to Gym Contest — Alpha IV (by AlgoRave)
maomao90 → Editorial for Hello 2024
maomao90 → I am top 1 contributor. AMA!
![]()
YoyOyoYOy000y000 → Centroid Decomposition on a tree(Beginner)
D_coder22 → Uncertainty in Python Time of Execution
bycicle → Click here if you want a fast way to get rid of your alt
SlavicG → Codeforces Round 918 (Div. 4)
mohammed_orkhan → I wnat to be EXPERT!!
thenymphsofdelphi → Codeforces Round #873 (Div. 1 & 2) Editorial
VivaciousAubergine → Wow! You received a rating of -501 in the CodeTON round. Share it!
diskoteka → Codeforces Round #878 (Div.3) Разбор
CheaterExposer → [UPDATE] Codeforces Cheater IOI Medalist
sarthak1357 → CSES shortest routes 1
![]()
Pyqe → Codeforces Round #831 (Div. 1 + Div. 2, based on COMPFEST 14 Final) Editorial
![]()
arham_doshi → cses graph session editorial(incomplete)
SAD_IN_NIGHTMARE → 2024 OIs
parth_1818 → Know Some Sorting Techniques
I_am_Polish_Girl → Dijkstra Algorithgm
atcoder_official → AtCoder Beginner Contest 335 (Sponsored by Mynavi) Announcement
Блог пользователя fsb4000
Автор fsb4000, 12 лет назад ,
Задача 120 А http://codeforces.com/problemset/problem/120/A . Простая задача, но в ней файловый ввод вывод. Я написал такой код, но он падает на RunTimeError в системе. У меня все работает правильно. Даже в виртуальных машинах проверял и Suse 11.4 и в MacOSX10.6. То есть и под mono все должно работать. В чем может быть проблема, и как ее решить?
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
class Program
static void Main(string[] args)
var temp = File.ReadAllLines(«input.txt», Encoding.ASCII);

c#, mono
Комментарии (1)
12 лет назад , # |
А не судьба локализовать, в какой строке возникает RTE?
Ну, чтобы спрашивать «а почему у меня вылетает ошибка вот в этой строчке» (хотя тогда наверное понимание само придёт).
Хм. Ну да, я не совсем прав. Легко установить что ошибка при первой попытке работы с файлом (ReadAllLines), но если её поймать, то её не удаётся вывести (т.к. при попытке вывести что угодно тоже возникает ошибка). 😉
Пытался посмотреть как в этом контесте кто-нибудь что-нибудь на C# писал — нашёл 4 человек — однако все они после первой попытки переключились на паскаль или C++. К чему бы это, интересно. 😀
К сожалению из-за сложности с поиском по ресурсу трудно найти, обсуждались ли какие-то проблемы с этим или нет.
File Класс
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет статические методы для создания, копирования, удаления, перемещения и открытия одного файла, а также помогает при создании объектов FileStream.
public ref class File abstract sealed
public ref class File sealed
public static class File
public sealed class File
[System.Runtime.InteropServices.ComVisible(true)] public static class File
type File = class
[] type File = class
Public Class File
Public NotInheritable Class File
Наследование
Примеры
В следующем примере показано, как использовать File класс для проверка, существует ли файл, и в зависимости от результата либо создать новый файл и записать в него, либо открыть существующий файл и прочитать из него. Перед выполнением кода создайте папку c:\temp .
using namespace System; using namespace System::IO; int main() < String^ path = "c:\\temp\\MyTest.txt"; if ( !File::Exists( path ) ) < // Create a file to write to. StreamWriter^ sw = File::CreateText( path ); try < sw->WriteLine( "Hello" ); sw->WriteLine( "And" ); sw->WriteLine( "Welcome" ); > finally < if ( sw ) delete (IDisposable^)(sw); >> // Open the file to read from. StreamReader^ sr = File::OpenText( path ); try < String^ s = ""; while ( s = sr->ReadLine() ) < Console::WriteLine( s ); >> finally < if ( sr ) delete (IDisposable^)(sr); >try < String^ path2 = String::Concat( path, "temp" ); // Ensure that the target does not exist. File::Delete( path2 ); // Copy the file. File::Copy( path, path2 ); Console::WriteLine( "was copied to .", path, path2 ); // Delete the newly created file. File::Delete( path2 ); Console::WriteLine( " was successfully deleted.", path2 ); > catch ( Exception^ e ) < Console::WriteLine( "The process failed: ", e ); > >
using System; using System.IO; class Test < public static void Main() < string path = @"c:\temp\MyTest.txt"; if (!File.Exists(path)) < // Create a file to write to. using (StreamWriter sw = File.CreateText(path)) < sw.WriteLine("Hello"); sw.WriteLine("And"); sw.WriteLine("Welcome"); >> // Open the file to read from. using (StreamReader sr = File.OpenText(path)) < string s; while ((s = sr.ReadLine()) != null) < Console.WriteLine(s); >> > >
open System.IO let path = @"c:\temp\MyTest.txt" if File.Exists path |> not then // Create a file to write to. use sw = File.CreateText path sw.WriteLine "Hello" sw.WriteLine "And" sw.WriteLine "Welcome" // Open the file to read from. do use sr = File.OpenText path let mutable s = sr.ReadLine() while isNull s |> not do printfn $"" s
Imports System.IO Public Class Test Public Shared Sub Main() Dim path As String = "c:\temp\MyTest.txt" If File.Exists(path) = False Then ' Create a file to write to. Using sw As StreamWriter = File.CreateText(path) sw.WriteLine("Hello") sw.WriteLine("And") sw.WriteLine("Welcome") End Using End If ' Open the file to read from. Using sr As StreamReader = File.OpenText(path) Do While sr.Peek() >= 0 Console.WriteLine(sr.ReadLine()) Loop End Using End Sub End Class
Комментарии
File Используйте класс для типичных операций, таких как копирование, перемещение, переименование, создание, открытие, удаление и добавление к одному файлу за раз. Класс также можно использовать для File получения и задания атрибутов файла или DateTime сведений, связанных с созданием, доступом и записью файла. Если вы хотите выполнять операции с несколькими файлами, см. раздел Directory.GetFiles или DirectoryInfo.GetFiles.
Многие методы File возвращают другие типы ввода-вывода при создании или открытии файлов. Эти другие типы можно использовать для дальнейшего управления файлом. Дополнительные сведения см. в разделе о конкретных File членах, таких как OpenText, CreateTextили Create.
Так как все File методы являются статическими, лучше использовать File метод, а не соответствующий FileInfo метод экземпляра, если требуется выполнить только одно действие. Для всех File методов требуется путь к файлу, которым вы управляете.
Статические методы File класса выполняют проверки безопасности для всех методов. Если вы собираетесь повторно использовать объект несколько раз, рассмотрите возможность использования соответствующего метода экземпляра FileInfo , так как проверка безопасности не всегда потребуется.
По умолчанию полный доступ на чтение и запись к новым файлам предоставляется всем пользователям.
В следующей таблице описаны перечисления, используемые для настройки поведения различных File методов.
| Перечисление | Описание |
|---|---|
| FileAccess | Указывает доступ для чтения и записи к файлу. |
| FileShare | Указывает уровень доступа, разрешенный для файла, который уже используется. |
| FileMode | Указывает, сохраняется или перезаписывается содержимое существующего файла, а также вызывает ли запросы на создание существующего файла исключение. |
В членах, которые принимают путь в качестве входной строки, этот путь должен быть правильно сформирован или возникает исключение. Например, если путь является полным, но начинается с пробела, путь не обрезается в методах класса . Таким образом, путь имеет неправильный формат и вызывается исключение. Аналогичным образом путь или сочетание путей не могут быть полностью заданы дважды. Например, "c:\temp c:\windows" также в большинстве случаев вызывает исключение. Убедитесь, что пути правильно сформированы при использовании методов, которые принимают строку пути.
В членах, которые принимают путь, путь может ссылаться на файл или только каталог. Указанный путь также может ссылаться на относительный путь или UNC-путь для имени сервера и общей папки. Например, допустимы все следующие пути:
- "c:\\\MyDir\\\MyFile.txt" в C# или "c:\MyDir\MyFile.txt" в Visual Basic.
- "c:\\\MyDir" в C# или "c:\MyDir" в Visual Basic.
- "MyDir\\\MySubdir" в C# или "MyDir\MySubDir" в Visual Basic.
- "\\\\\\\MyServer\\\MyShare" в C# или "\\\MyServer\MyShare" в Visual Basic.
Список распространенных задач ввода-вывода см. в разделе Общие задачи ввода-вывода.
Методы
Добавляет строки в файл, затем закрывает файл. Если указанный файл не существует, этот метод создает файл, записывает в него указанные строки и затем закрывает файл.
Добавляет строки в файл, используя заданную кодировку, затем закрывает файл. Если указанный файл не существует, этот метод создает файл, записывает в него указанные строки и затем закрывает файл.
Асинхронно добавляет строки в файл, затем закрывает файл. Если указанный файл не существует, этот метод создает файл, записывает в него указанные строки и затем закрывает файл.
Асинхронно добавляет строки в файл, используя заданную кодировку, затем закрывает файл. Если указанный файл не существует, этот метод создает файл, записывает в него указанные строки и затем закрывает файл.
Открывает файл, добавляет в него указанную строку и затем закрывает файл. Если файл не существует, этот метод создает файл, записывает в него указанную строку и затем закрывает файл.
Добавляет указанную строку в файл в указанной кодировке, создавая файл, если он не существует.
Асинхронно открывает или создает файл, если он еще не существует, добавляет указанную строку в файл, а затем закрывает файл.
Асинхронно открывает или создает файл, если он еще не существует, добавляет указанную строку в файл в указанной кодировке, а затем закрывает файл.
Создает объект StreamWriter, добавляющий текст с кодировкой UTF-8 в существующий файл, или в новый файл, если указанный файл не существует.
Копирует существующий файл в новый файл. Перезапись файла с тем же именем не разрешена.
Копирует существующий файл в новый файл. Перезапись файла с тем же именем разрешена.
Создает или усекает и перезаписывает файл по указанному пути.
Создает или усекает и перезаписывает файл по указанному пути, указывая размер буфера.
Создает или перезаписывает файл по заданному пути с указанием размера буфера и параметров, которые описывают, как создавать или перезаписывать файл.
Создает или перезаписывает файл по заданному пути с указанием размера буфера и параметров, которые описывают, как создавать или перезаписывать файл. Также указывается значение, определяющее контроль доступа и безопасность аудита для файла.
Создает символьную ссылку на файл, определяемую параметром path , которая указывает на pathToTarget .
Создается или открывается файл для записи текста в кодировке UTF-8. Если файл уже существует, его содержимое будет заменено.
Расшифровывает файл, зашифрованный текущей учетной записью с помощью метода Encrypt(String).
Удаляет указанный файл.
Шифрует файл таким образом, чтобы его можно было расшифровать только с помощью учетной записи, которая использовалась для шифрования.
Определяет, существует ли заданный файл.
Получает объект FileSecurity, который инкапсулирует записи списка ACL для заданного файла.
Получает объект FileSecurity, инкапсулирующий записи списка ACL определенного типа для конкретного файла.
Возвращает указанный FileAttributes файл или каталог, связанный с fileHandle .
Получает значение FileAttributes для файла в пути.
Возвращает время создания указанного файла или каталога.
Возвращает дату и время создания заданного файла или каталога.
Возвращает дату и время создания указанного файла или каталога в формате UTC.
Возвращает дату и время создания указанного файла или каталога в формате UTC.
Возвращает дату и время последнего доступа к указанному файлу или каталогу.
Возвращает время и дату последнего обращения к указанному файлу или каталогу.
Возвращает дату и время последнего доступа к указанному файлу или каталогу в формате UTC.
Возвращает дату и время последнего доступа к указанному файлу или каталогу в формате UTC.
Возвращает дату и время последней записи указанного файла или каталога.
Возвращает время и дату последней операции записи в указанный файл или каталог.
Возвращает дату и время последней записи указанного файла или каталога в формате UTC.
Возвращает дату и время последней записи указанного файла или каталога в формате UTC.
Возвращает объект UnixFileMode указанного дескриптора файла.
Получает значение UnixFileMode для файла в пути.
Перемещает заданный файл в новое местоположение и разрешает переименование файла.
Перемещает указанный файл в новое расположение, предоставляя параметры для указания нового имени файла и замены целевого файла, если он уже существует.
Открывает объект FileStream по указанному пути с доступом для чтения и записи без совместного доступа.
Открывает FileStream в заданном пути с заданным режимом и доступом без совместного доступа.
Открывает FileStream в заданном пути, с заданным режимом доступа для чтения, записи или чтения и записи и с заданным параметром совместного использования.
Инициализирует новый экземпляр FileStream класса с указанным путем, режимом создания, разрешением на чтение и запись и совместное использование, доступом других файловых потоков к тому же файлу, размером буфера, дополнительными параметрами файла и размером выделения.
Инициализирует новый экземпляр SafeFileHandle класса с указанным путем, режимом создания, разрешением на чтение и запись и совместное использование, доступом к другому файлу SafeFileHandles, дополнительными параметрами файла и размером выделения.
Открывает для чтения существующий файл.
Открывает для чтения существующий файл, содержащий текст в кодировке UTF-8.
Открывает существующий файл или создает новый файл для записи.
Открывает двоичный файл, считывает содержимое файла в массив байтов и затем закрывает файл.
Асинхронно открывает двоичный файл, считывает содержимое файла в массив байтов и затем закрывает файл.
Открывает текстовый файл, считывает все строки файла и затем закрывает файл.
Открывает файл, считывает все строки файла с заданной кодировкой и затем закрывает файл.
Асинхронно открывает текстовый файл, считывает все строки файла и затем закрывает файл.
Асинхронно открывает текстовый файл, считывает все строки файла с заданной кодировкой и затем закрывает файл.
Открывает текстовый файл, считывает весь текст файла и затем закрывает файл.
Открывает файл, считывает весь текст файла с заданной кодировкой и затем закрывает файл.
Асинхронно открывает текстовый файл, считывает весь текст файла и затем закрывает файл.
Асинхронно открывает текстовый файл, считывает весь текст из файла с заданной кодировкой и затем закрывает файл.
Считывает строки файла.
Считывает строки файла с заданной кодировкой.
Асинхронно считывает строки файла.
Асинхронно считывает строки файла с указанной кодировкой.
Заменяет содержимое заданного файла на содержимое другого файла, удаляя исходный файл и создавая резервную копию замененного файла.
Заменяет содержимое заданного файла на содержимое другого файла, удаляя исходный файл и создавая резервную копию замененного файла, и при необходимости игнорирует ошибки слияния.
Возвращает целевой объект указанной ссылки на файл.
Применяет записи списка управления доступом (ACL), описанные объектом FileSecurity, к заданному файлу.
Задает указанный FileAttributes файл или каталог, связанный с fileHandle .
Устанавливает заданные атрибуты FileAttributes файла по заданному пути.
Задает дату и время создания файла или каталога.
Устанавливает дату и время создания файла.
Задает дату и время создания файла или каталога в формате UTC.
Задает дату и время создания файла в формате UTC.
Устанавливает время и дату последнего обращения к заданному файлу или каталогу.
Устанавливаются дата и время последнего доступа к заданному файлу.
Задает дату и время последнего доступа к указанному файлу или каталогу в формате UTC.
Задает дату и время последнего доступа к указанному файлу в формате UTC.
Задает дату и время последней записи указанного файла или каталога.
Устанавливаются дата и время последней операции записи в заданный файл.
Задает дату и время последней записи указанного файла или каталога в формате UTC.
Задает дату и время последней записи указанного файла в формате UTC.
Задает заданный UnixFileMode дескриптор файла.
Устанавливает заданные атрибуты UnixFileMode файла по заданному пути.
Создает новый файл, записывает в него указанный массив байтов и затем закрывает файл. Если целевой файл уже существует, он усекается и перезаписывается.
Асинхронно создает новый файл, записывает в него указанный массив байтов и затем закрывает файл. Если целевой файл уже существует, он усекается и перезаписывается.
Создает новый файл, записывает в него коллекцию строк, затем закрывает файл.
Создает новый файл, используя указанную кодировку, записывает коллекцию строк в этот файл, затем закрывает файл.
Создает новый файл, записывает в него указанный массив строк и затем закрывает файл.
Создает новый файл, записывает указанный массив строк в этот файл, используя заданную кодировку, затем закрывает файл.
Асинхронно создает новый файл, записывает в него указанные строки и затем закрывает файл.
Асинхронно создает новый файл, записывает указанные строки в этот файл, используя заданную кодировку, затем закрывает файл.
Создает новый файл, записывает в него указанную строку и затем закрывает файл. Если целевой файл уже существует, он усекается и перезаписывается.
Создает новый файл, записывает указанную строку в этот файл, используя заданную кодировку, и затем закрывает файл. Если целевой файл уже существует, он усекается и перезаписывается.
Асинхронно создает новый файл, записывает в него указанную строку и затем закрывает файл. Если целевой файл уже существует, он усекается и перезаписывается.
Асинхронно создает новый файл, записывает указанную строку в этот файл, используя заданную кодировку, и затем закрывает файл. Если целевой файл уже существует, он усекается и перезаписывается.
Применяется к
См. также раздел
- DriveInfo
- FileSystemWatcher
- Файловый и потоковый ввод-вывод
- Чтение текста из файла
- Практическое руководство. Запись текста в файл
- Практическое руководство. Считывание данных из нового файла и запись в этот файл
Обработка файлов в C#: операции ввода-вывода [Примеры]
C# имеет широкий спектр файловых операций. Эти операции включают открытие файла, чтение или запись в файл. Могут быть случаи, когда вы захотите работать с файлами напрямую, и в этом случае вам придется использовать файловые операции, доступные в C#. Некоторые из основных операций с файлами упомянуты ниже.
- Чтение. Эта операция является основной операцией чтения, при которой данные считываются из файла.
- Запись. Эта операция является основной операцией записи, при которой данные записываются в файл. По умолчанию все существующее содержимое удаляется из файла и записывается новое содержимое.
- Добавление. Эта операция также включает запись информации в файл. Единственное отличие состоит в том, что существующие данные в файле не перезаписываются. Новые данные для записи добавляются в конец файла.
Основные команды ввода-вывода
C# и .Net могут работать с файлами с помощью нескольких команд файлового ввода-вывода. Давайте посмотрим на некоторые из этих команд. В нашем примере мы предположим, что на диске D у нас есть файл с именем example.txt.
Файл будет простым текстовым файлом и будет состоять из двух строк, как показано ниже.
- Гуру99 – .Net
- Гуру99 -С#
В нашем примере мы создадим простое консольное приложение и будем работать с командами файлового ввода-вывода. Консольное приложение — это базовое приложение, созданное в предыдущем руководстве. В консольном приложении весь код записывается в файл program.cs.
Файл существует
Метод File существует используется для проверки существования определенного файла. Итак, теперь давайте посмотрим код, который можно использовать для проверки существования нашего файла example.txt или нет. Введите приведенный ниже код в файл program.cs.

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication < class Tutorial < static void Main(string[] args) < String path = @"D:\Example.txt"; if (File.Exists(path)) < Console.WriteLine("File Exists"); >Console.ReadKey(); > > >
Объяснение кода: -
- Сначала мы устанавливаем строковую переменную с путем к нашему файлу example.txt.
- Далее мы используем метод File.Exists, чтобы проверить, существует файл или нет. Если файл существует, будет возвращено истинное значение.
- Если мы получили истинное значение и файл существует, то мы пишем в консоль сообщение «Файл существует».
Когда приведенный выше код установлен и проект выполняется с использованием Visual Studio, вы получите приведенный ниже вывод.
Выход:-

Из приведенного выше вывода видно, что команда File.Exists была выполнена успешно, и в окне консоли отобразилось правильное сообщение.
File.ReadAlllines
Метод используется для чтения всех строк файла по одной. Затем строки сохраняются в переменной строкового массива. Давайте посмотрим на пример. Введите приведенный ниже код в файл program.cs.

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication < class Tutorial < static void Main(string[] args) < String path = @"D:\Example.txt"; String[] lines; lines = File.ReadAllLines(path); Console.WriteLine(lines[0]); Console.WriteLine(lines[1]); Console.ReadKey(); >> >
Объяснение кода: -
- Сначала мы объявляем переменную строкового массива. Это будет использоваться для хранения результата, который будет возвращен методом File.ReadAllLines.
- Далее мы используем метод File.ReadAllLines для чтения всех строк из нашего текстового файла. Затем результат передается в переменную линий.
- Поскольку мы знаем, что наш файл содержит только 2 строки, мы можем получить доступ к значениям переменных массива с помощью командlines[0] иlines[1].
Когда приведенный выше код установлен и проект запускается с использованием Visual Studio, вы получите результат ниже.
Выход:-

Из вывода вы можете видеть, что команда File.ReadAllLines вернула обе строки из нашего файла example.txt.
Файл.ReadAllText
Этот метод используется для одновременного чтения всех строк файла. Затем строки сохраняются в строковой переменной. Давайте посмотрим на пример. Введите приведенный ниже код в файл program.cs.

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication < class Tutorial < static void Main(string[] args) < String path = @"D:\Example.txt"; String lines; lines = File.ReadAllText(path); Console.WriteLine(lines); Console.ReadKey(); >> >
Объяснение кода: -
- Сначала мы объявляем строковую переменную под названием Lines. Он будет использоваться для хранения результата, который будет возвращен методом File.ReadAllText.
- Далее мы используем метод File.ReadAllText для чтения всех строк из нашего текстового файла. Затем результат передается в переменную линий.
- Мы можем напрямую использовать метод Console.Writeline для отображения значения переменной Lines.
Когда приведенный выше код установлен и проект запускается с использованием Visual Studio, вы получите приведенный ниже вывод.
Выход:-

Из вывода вы можете видеть, что команда File.ReadAlltext вернула обе строки из нашего файла example.txt.
Файл.Копировать
Метод используется для создания копии существующего файла. Давайте посмотрим на пример. Введите приведенный ниже код в файл program.cs.

using System; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication < class Tutorial < static void Main(string[] args) < String path = @"D:\Example.txt"; String copypath = @"D:\ExampleNew.txt"; File.Copy(path,copypath); Console.ReadKey(); >> >
Объяснение кода: -
- Сначала мы объявляем строковую переменную с именем path. Это будет местоположение нашего файла example.txt. Этот файл будет исходным файлом, используемым для операции копирования.
- Далее мы объявляем строковую переменную под названием copypath. Это будет местоположение нового файла под названием «ExampleNew.txt». Это будет файл назначения, в который будет записано содержимое исходного файла example.txt.
- Затем мы вызываем метод File.Copy, чтобы скопировать файл example.txt в файл exampleNew.txt.
Если указанный выше код установлен и проект запускается с использованием Visual Studio, файл example.txt будет скопирован в файл exampleNew.txt.
Файл.Удалить
Метод используется для удаления существующего файла. Давайте посмотрим на пример. Введите приведенный ниже код в файл program.cs.

using System; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication < class Tutorial < static void Main(string[] args) < String path = @"D:\Example.txt"; File.Delete(path); Console.ReadKey(); >> >
Объяснение кода: -
- Сначала мы объявляем строковую переменную с именем path. Это будет местоположение нашего файла example.txt. Это файл, который будет удален.
- Далее мы вызываем метод File.Delete для удаления файла.
Когда приведенный выше код установлен и проект запускается с использованием Visual Studio, файл example.txt будет удален с диска D.
Итоги
- В C# имеется ряд файловых операций, которые можно выполнять с файлами. Большинство этих операций являются частью класса File.
- Если вы хотите прочитать данные из файла, вы можете использовать методы File.ReadAlltext или File.ReadAllLines.
| Файловый метод | Описание |
|---|---|
| Файл существует | Метод File существует используется для проверки существования определенного файла. |
| File.ReadAlllines | Метод используется для чтения всех строк файла по одной. |
| Файл.ReadAllText | Этот метод используется для одновременного чтения всех строк файла. |
| Файл.Копировать | Метод используется для создания копии существующего файла. |
| Файл.Удалить | Метод используется для удаления существующего файла. |
- Учебное пособие по массивам C#: создание, объявление, инициализация
- Хэш-таблица C# с примерами
- Учебное пособие по потоку в C#: StreamReader и StreamWriter [Пример]
- Сериализация и десериализация в C# на примере
- 50 лучших вопросов и ответов на собеседовании по C# (2024 г.)
- Учебное пособие по C# в формате PDF (загрузить сейчас)
- 13 ЛУЧШИХ книг по C# (обновление 2024 г.)
- ЛУЧШАЯ C# IDE для Windows, Linux и Mac (обновление 2024 г.)