读取和写入文件的最简单方法

本文关键字:最简单 方法 文件 读取 | 更新日期: 2023-09-27 18:10:01

C# 中,有很多不同的方法来读取和写入文件(文本文件,而不是二进制文件(。

我只需要一些简单且使用最少代码的东西,因为我将在项目中大量处理文件。我只需要一些string的东西,因为我所需要的只是读写string

读取和写入文件的最简单方法

使用 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);

本页列出了常见 I/O 任务的各种帮助程序方法。

除了另一个答案中显示的File.ReadAllTextFile.ReadAllLinesFile.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 readText = readtext.ReadLine();
}

笔记:

  • 您可以使用readtext.Dispose()而不是using,但在出现异常时不会关闭文件/读取器/写入器
  • 请注意,相对路径是相对于当前工作目录的。您可能希望使用/构造绝对路径。
  • 缺少using/Close是"为什么数据未写入文件"的常见原因。
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");
    }
}

读取文件和写入文件的最简单方法:

//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);
}
using (var file = File.Create("pricequote.txt"))
{
    ...........                        
}
using (var file = File.OpenRead("pricequote.txt"))
{
    ..........
}

简单,容易,一旦你完成了对象,也可以处理/清理它。

@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

我自己永远不会找到这个,但它效果很好,所以我想分享这个。玩得愉快!

以下是写入和读取文件的最佳和最常用的方法:

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);

我在大学里学到的旧方法是使用流读取器/流编写器,但文件 I/O 方法不那么笨拙,需要的代码行更少。您可以在 IDE 中键入"File."(确保包含 System.IO import 语句(并查看所有可用的方法。下面是使用 Windows 窗体应用程序向/从文本文件 (.txt.( 读取/写入字符串的示例方法。

将文本追加到现有文件:

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
}
或者

,如果你真的是关于线条:

System.IO.File 还包含一个静态方法 WriteAllLines,因此您可以执行以下操作:

IList<string> myLines = new List<string>()
{
    "line1",
    "line2",
    "line3",
};
File.WriteAllLines("./foo", myLines);

阅读时最好使用 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 .

     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);
        }      
    }
private void Form1_Load(object sender, EventArgs e)
    {
        //Write a file
        string text = "The text inside the file.";
        System.IO.File.WriteAllText("file_name.txt", text);
        //Read a file
        string read = System.IO.File.ReadAllText("file_name.txt");
        MessageBox.Show(read); //Display text in the file
    }
  1. 从文件读取
string filePath = @"YOUR PATH";
List<string> lines = File.ReadAllLines(filePath).ToList();
  1. 写入文件
List<string> lines = new List<string>();
string a = "Something to be written"
lines.Add(a);
File.WriteAllLines(filePath, lines);

简单地说:

String inputText = "Hello World!";
File.WriteAllText("yourfile.ext",inputText); //writing
var outputText = File.ReadAllText("yourfile.ext"); //reading

您正在寻找FileStreamWriterStreamReader类。