Самый простой способ читать и записывать файлы
В С# существует множество способов чтения и записи файлов (текстовых файлов, а не двоичных).
Мне просто нужно что-то, что легко и использует наименьшее количество кода, потому что я собираюсь много работать с файлами в моем проекте. Мне нужно что-то для string
, так как все, что мне нужно, это читать и писать string
s.
Ответы
Ответ 1
Используйте File.ReadAllText и File.WriteAllText.
Это не может быть проще...
Примеры MSDN:
// Create a file to write to.
string createText = "Hello and Welcome" + Environment.NewLine;
File.WriteAllText(path, createText);
// Open the file to read from.
string readText = File.ReadAllText(path);
Ответ 2
В дополнение к File.ReadAllText
, File.ReadAllLines
и File.WriteAllText
(и аналогичным помощникам из класса File
), показанным в другом ответе, вы можете использовать StreamWriter
/StreamReader
.
Запись текстового файла:
using(StreamWriter writetext = new StreamWriter("write.txt"))
{
writetext.WriteLine("writing in text file");
}
Чтение текстового файла:
using(StreamReader readtext = new StreamReader("readme.txt"))
{
string readMeText = readtext.ReadLine();
}
Примечания:
- Вы можете использовать
readtext.Close()
вместо using
, но он не будет закрывать файл/считыватель/запись в случае исключений
- Имейте в виду, что относительный путь относится к текущему рабочему каталогу. Вы можете использовать/построить абсолютный путь.
- Отсутствует
using
/Close
- очень распространенная причина "почему данные не записываются в файл".
Ответ 3
FileStream fs = new FileStream(txtSourcePath.Text,FileMode.Open, FileAccess.Read);
using(StreamReader sr = new StreamReader(fs))
{
using (StreamWriter sw = new StreamWriter(Destination))
{
sw.writeline("Your text");
}
}
Ответ 4
using (var file = File.Create("pricequote.txt"))
{
...........
}
using (var file = File.OpenRead("pricequote.txt"))
{
..........
}
Простой, легкий и также удаляет/очищает объект, как только вы закончите с ним.
Ответ 5
Самый простой способ чтения из файла и записи в файл:
//Read from a file
string something = File.ReadAllText("C:\\Rfile.txt");
//Write to a file
using (StreamWriter writer = new StreamWriter("Wfile.txt"))
{
writer.WriteLine(something);
}
Ответ 6
@AlexeiLevenkov указал мне на другой "самый простой способ", а именно метод расширения. Требуется лишь небольшое программирование, а затем обеспечивается абсолютно простой способ чтения/записи, а также гибкость в создании вариантов в соответствии с вашими личными потребностями. Вот полный пример:
Это определяет метод расширения для типа string
. Обратите внимание, что единственное, что действительно имеет значение, это аргумент функции с дополнительным ключевым словом this
, который заставляет его ссылаться на объект, к которому присоединен метод. Имя класса не имеет значения; класс и метод должны быть объявлены как static
.
using System.IO;//File, Directory, Path
namespace Lib
{
/// <summary>
/// Handy string methods
/// </summary>
public static class Strings
{
/// <summary>
/// Extension method to write the string Str to a file
/// </summary>
/// <param name="Str"></param>
/// <param name="Filename"></param>
public static void WriteToFile(this string Str, string Filename)
{
File.WriteAllText(Filename, Str);
return;
}
// of course you could add other useful string methods...
}//end class
}//end ns
Вот как использовать string extension method
, обратите внимание, что он автоматически ссылается на class Strings
:
using Lib;//(extension) method(s) for string
namespace ConsoleApp_Sandbox
{
class Program
{
static void Main(string[] args)
{
"Hello World!".WriteToFile(@"c:\temp\helloworld.txt");
return;
}
}//end class
}//end ns
Я бы никогда не нашел это сам, но он прекрасно работает, поэтому я хотел поделиться этим. Повеселись!
Ответ 7
При чтении используется элемент управления OpenFileDialog для просмотра любого файла, который вы хотите прочитать. Найдите код ниже:
Не забудьте добавить следующий оператор using
для чтения файлов: using System.IO;
private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
textBox1.Text = File.ReadAllText(openFileDialog1.FileName);
}
}
Для записи файлов вы можете использовать метод File.WriteAllText
.
Ответ 8
Или, если вы действительно о строках:
System.IO.File также содержит статический метод WriteAllLines, поэтому вы можете сделать:
IList<string> myLines = new List<string>()
{
"line1",
"line2",
"line3",
};
File.WriteAllLines("./foo", myLines);
Ответ 9
Это лучшие и наиболее часто используемые методы записи и чтения из файлов:
using System.IO;
File.AppendAllText(sFilePathAndName, sTextToWrite);//add text to existing file
File.WriteAllText(sFilePathAndName, sTextToWrite);//will overwrite the text in the existing file. If the file doesn't exist, it will create it.
File.ReadAllText(sFilePathAndName);
Старым способом, которому меня учили в колледже, было использование потокового считывателя/потокового писателя, но методы файлового ввода-вывода менее громоздки и требуют меньше строк кода. Вы можете ввести "Файл". в вашей IDE (убедитесь, что вы включили оператор импорта System.IO) и посмотрите все доступные методы. Ниже приведены примеры методов чтения/записи строк в/из текстовых файлов (.txt.) С помощью приложения Windows Forms.
Добавить текст в существующий файл:
private void AppendTextToExistingFile_Click(object sender, EventArgs e)
{
string sTextToAppend = txtMainUserInput.Text;
//first, check to make sure that the user entered something in the text box.
if (sTextToAppend == "" || sTextToAppend == null)
{MessageBox.Show("You did not enter any text. Please try again");}
else
{
string sFilePathAndName = getFileNameFromUser();// opens the file dailog; user selects a file (.txt filter) and the method returns a path\filename.txt as string.
if (sFilePathAndName == "" || sFilePathAndName == null)
{
//MessageBox.Show("You cancalled"); //DO NOTHING
}
else
{
sTextToAppend = ("\r\n" + sTextToAppend);//create a new line for the new text
File.AppendAllText(sFilePathAndName, sTextToAppend);
string sFileNameOnly = sFilePathAndName.Substring(sFilePathAndName.LastIndexOf('\\') + 1);
MessageBox.Show("Your new text has been appended to " + sFileNameOnly);
}//end nested if/else
}//end if/else
}//end method AppendTextToExistingFile_Click
Получите имя файла от пользователя через проводник/диалог открытия файла (он понадобится вам для выбора существующих файлов).
private string getFileNameFromUser()//returns file path\name
{
string sFileNameAndPath = "";
OpenFileDialog fd = new OpenFileDialog();
fd.Title = "Select file";
fd.Filter = "TXT files|*.txt";
fd.InitialDirectory = Environment.CurrentDirectory;
if (fd.ShowDialog() == DialogResult.OK)
{
sFileNameAndPath = (fd.FileName.ToString());
}
return sFileNameAndPath;
}//end method getFileNameFromUser
Получить текст из существующего файла:
private void btnGetTextFromExistingFile_Click(object sender, EventArgs e)
{
string sFileNameAndPath = getFileNameFromUser();
txtMainUserInput.Text = File.ReadAllText(sFileNameAndPath); //display the text
}
Ответ 10
Вы ищете классы File
, StreamWriter
и StreamReader
.
Ответ 11
class Program
{
public static void Main()
{
//To write in a txt file
File.WriteAllText("C:\\Users\\HP\\Desktop\\c#file.txt", "Hello and Welcome");
//To Read from a txt file & print on console
string copyTxt = File.ReadAllText("C:\\Users\\HP\\Desktop\\c#file.txt");
Console.Out.WriteLine("{0}",copyTxt);
}
}