获取文件路径
string path = System.AppDomain.CurrentDomain.BaseDirectory + "文件配置.ini";
string path0 = Environment.CurrentDirectory.ToString();
文件是否存在
if (File.Exists(path))
{
File.Delete(path);
}
创建文件写入文本文件
//创建新文件
using (FileStream fs = File.Create(path))
{
//按编码编译为字节
byte[] info = Encoding.Default.GetBytes(value);
//字节数组写入文本件
fs.Write(info, 0, info.Length);
}
//行写入文本文件
//向文本文件写入行
File.WriteAllLines(path, new string[] { "This is some text" + Environment.NewLine }, Encoding.UTF8);
for (int i = 1; i < 100; i++)
{
File.AppendAllText(path, Convert.ToString(i, 10).ToString().ToUpper() + " ", Encoding.UTF8);
}
//读取文件内容
using (FileStream fs = File.OpenRead(path))
{
byte[] b = new byte[256];
UTF8Encoding temp = new UTF8Encoding(true);
Encoding temp = Encoding.Default;
while (fs.Read(b, 0, b.Length) > 0)
{
rtb_Info.AppendText(temp.GetString(b) + Environment.NewLine); Standard Peritph Fly
}
}
文件全部读出、全部写入、单行写入、单行读出
rtb_Info.AppendText("**************************************************" + Environment.NewLine);
rtb_Info.AppendText(File.ReadAllText(path, Encoding.UTF8));
rtb_Info.AppendText("**************************************************" + Environment.NewLine);
string[] txt = File.ReadAllLines(path, Encoding.UTF8);
foreach (var item in txt)
{
rtb_Info.AppendText(item + Environment.NewLine);
}
rtb_Info.AppendText("**************************************************" + Environment.NewLine);
path = System.AppDomain.CurrentDomain.BaseDirectory + "Standard Peritph Fly.hex";
rtb_Info.AppendText(File.ReadAllText(path, Encoding.UTF8));
文件的读写
写文件和读文件一样,如果你要写入的内容不是很多,可以使用File.WriteAllText方法来一次将内容全部写如文件。如果你要将一个字符串的内容写入文件,可以用File.WriteAllText(FilePath)或指定编码方式 File.WriteAllText(FilePath, Encoding)方法。
string FilePath = System.AppDomain.CurrentDomain.BaseDirectory;//+ "MyText.hex"
//写文件和读文件一样,如果你要写入的内容不是很多,可以使用File.WriteAllText方法来一次将内容全部写如文件。
//如果你要将一个字符串的内容写入文件,可以用File.WriteAllText(FilePath)
//或指定编码方式 File.WriteAllText(FilePath, Encoding)方法。
string writeBuffer0 = "写文件和读文件一样";
File.WriteAllText(FilePath + "ascii.txt", writeBuffer0);
File.WriteAllText(FilePath + "ascii-2.txt", writeBuffer0, Encoding.ASCII);// 也可以指定编码方式
// 如果你要读取的文件内容不是很多,可以使用 File.ReadAllText(FilePath)
// 或指定编码方式 File.ReadAllText(FilePath, Encoding)的方法。它们都一次将文本内容全部读完,
// 并返回一个包含全部文本内容的字符串
string readBuffer0 = File.ReadAllText(FilePath + "ascii.txt");
string readBuffer1 = File.ReadAllText(FilePath + "ascii.txt", Encoding.UTF8);// 也可以指定编码方式
string readBuffer2 = File.ReadAllText(FilePath + "ascii-2.txt", Encoding.ASCII);// 也可以指定编码方式
//如果你有一个字符串数组,你要将每个字符串元素都写入文件中,可以用File.WriteAllLines方法:
string[] writeBufferArray0 = { "如果你有一个字符串数组", "File.WriteAllLines" };
File.WriteAllLines(FilePath + "ascii-Lines.txt", writeBufferArray0);
File.WriteAllLines(FilePath + "ascii-2-Lines.txt", writeBufferArray0, Encoding.ASCII);
// 也可以使用方法File.ReadAllLines。该方法返回一个字符串数组。每一行都是一个数组元素。
string[] readBufferArray0 = File.ReadAllLines(FilePath + "ascii-Lines.txt");
string[] readBufferArray1 = File.ReadAllLines(FilePath + "ascii-2-Lines.txt", Encoding.ASCII);// 也可以指定编码方式
使用File.WriteAllText或File.WriteAllLines方法时,如果指定的文件路径不存在,会创建一个新文件;如果文件已经存在,则会覆盖原文件。当要写入的内容比较多时,同样也要使用流(Stream)的方式写入。.Net封装的类是StreamWriter。初始化StreamWriter类同样有很多方式:
// 如果文件不存在,创建文件; 如果存在,覆盖文件
StreamWriter streamWriter0 = new StreamWriter(FilePath + "utf-8.txt");
// 也可以指定编码方式
// true 是 append text, false 为覆盖原文件
StreamWriter streamWriter1 = new StreamWriter(FilePath + "utf-8.txt", true, Encoding.UTF8);
// FileMode.CreateNew: 如果文件不存在,创建文件;如果文件已经存在,抛出异常
FileStream fileStream0 = new FileStream(FilePath + "utf-8.txt", FileMode.CreateNew, FileAccess.Write, FileShare.Read);
StreamWriter streamWriter2 = new StreamWriter(fileStream0);// UTF-8 为默认编码
StreamWriter streamWriter3 = new StreamWriter(fileStream0, Encoding.UTF8);
// 如果文件不存在,创建文件; 如果存在,覆盖文件
FileInfo myFile0 = new FileInfo(FilePath + "utf-8.txt");
StreamWriter streamWriter4 = myFile0.CreateText();
//初始化完成后,可以用StreamWriter对象一次写入一行,一个字符,一个字符数组,甚至一个字符数组的一部分。
StreamWriter streamWriter = myFile0.CreateText();
// 写一个字符
streamWriter.Write('a');
// 写一个字符数组
char[] charArrayWriter = new char[100];
// initialize these characters
streamWriter.Write(charArrayWriter);
// 写一个字符数组的一部分
streamWriter.Write(charArrayWriter, 10, 15);
//同样,StreamWriter对象使用完后,不要忘记关闭。sw.Close(); 最后来看一个完整的使用StreamWriter一次写入一行的例子:
myFile0 = new FileInfo(FilePath + "utf-8.txt");
string[] strsm = { "早上好", "下午好" };
foreach (var s in strsm)
{
streamWriter.WriteLine(s);
}
streamWriter.Close();
当文本的内容比较大时,我们就不要将文本内容一次读完,而应该采用流(Stream)的方式来读取内容。Net为我们封装了StreamReader类。初始化StreamReader类有很多种方式。下面我罗列出几种
StreamReader streamReader0 = new StreamReader(FilePath + "utf-8.txt");// 同样也可以指定编码方式
StreamReader streamReader1 = new StreamReader(FilePath + "utf-8.txt", Encoding.UTF8);
FileStream fs = new FileStream(FilePath + "utf-8.txt", FileMode.Open, FileAccess.Read, FileShare.None);
StreamReader streamReader2 = new StreamReader(fs);
StreamReader streamReader3 = new StreamReader(fs, Encoding.UTF8);
FileInfo fileInfo = new FileInfo(FilePath + "utf-8.txt");
StreamReader streamReader4 = fileInfo.OpenText();// OpenText 创建一个UTF-8 编码的StreamReader对象
// OpenText 创建一个UTF-8 编码的StreamReader对象
StreamReader streamReader5 = File.OpenText(FilePath + "utf-8.txt");
//初始化完成之后,你可以每次读一行,也可以每次读一个字符 ,还可以每次读几个字符,甚至也可以一次将所有内容读完。
StreamReader streamReader = File.OpenText(FilePath + "ascii.txt");
// 读一行
string nextLine = streamReader.ReadLine();
// 读一个字符
int nextChar = streamReader.Read();
// 读100个字符
int nChars = 100;
char[] charArrayRead = new char[nChars];
int nCharsRead = streamReader.Read(charArrayRead, 0, nChars);
// 全部读完
string restOfStream = streamReader.ReadToEnd();
//使用完StreamReader之后,不要忘记关闭它: sr.Closee();
//假如我们需要一行一行的读,将整个文本文件读完,下面看一个完整的例子:
while ((nextLine = streamReader.ReadLine()) != null)
{
Console.WriteLine(nextLine);
}
streamReader.Close();