C#如何对文件进行读写

 我来答
xiangjuan314
2015-12-24 · TA获得超过3.3万个赞
知道大有可为答主
回答量:2.9万
采纳率:0%
帮助的人:2898万
展开全部
(一) 读取文件
如果你要读取的文件内容不是很多,可以使用 File.ReadAllText(FilePath) 或指定编码方式 File.ReadAllText(FilePath, Encoding)的方法。

它们都一次将文本内容全部读完,并返回一个包含全部文本内容的字符串
string str = File.ReadAllText(@"c:\temp\ascii.txt");

// 也可以指定编码方式
string str2 = File.ReadAllText(@"c:\temp\ascii.txt", Encoding.ASCII);
也可以使用方法File.ReadAllLines。该方法返回一个字符串数组。每一行都是一个数组元素。
string[] strs = File.ReadAllLines(@"c:\temp\ascii.txt");

// 也可以指定编码方式
string[] strs2 = File.ReadAllLines(@"c:\temp\ascii.txt", Encoding.ASCII);
当文本的内容比较大时,我们就不要将文本内容一次读完,而应该采用流(Stream)的方式来读取内容。.Net为我们封装了StreamReader类。初始化StreamReader类有很多种方式。下面我罗列出几种
StreamReader sr1 = new StreamReader(@"c:\temp\utf-8.txt");
// 同样也可以指定编码方式
StreamReader sr2 = new StreamReader(@"c:\temp\utf-8.txt", Encoding.UTF8);

FileStream fs = new FileStream(@"C:\temp\utf-8.txt", FileMode.Open, FileAccess.Read, FileShare.None);
StreamReader sr3 = new StreamReader(fs);
StreamReader sr4 = new StreamReader(fs, Encoding.UTF8);

FileInfo myFile = new FileInfo(@"C:\temp\utf-8.txt");
// OpenText 创建一个UTF-8 编码的StreamReader对象
StreamReader sr5 = myFile.OpenText();

// OpenText 创建一个UTF-8 编码的StreamReader对象
StreamReader sr6 = File.OpenText(@"C:\temp\utf-8.txt");
初始化完成之后,你可以每次读一行,也可以每次读一个字符 ,还可以每次读几个字符,甚至也可以一次将所有内容读完。
// 读一行
string nextLine = sr.ReadLine();

// 读一个字符
int nextChar = sr.Read();

// 读100个字符
int nChars = 100;
char[] charArray = new char[nChars];
int nCharsRead = sr.Read(charArray, 0, nChars);

// 全部读完
string restOfStream = sr.ReadToEnd();
使用完StreamReader之后,不要忘记关闭它: sr.Closee();
假如我们需要一行一行的读,将整个文本文件读完,下面看一个完整的例子:
StreamReader sr = File.OpenText(@"C:\temp\ascii.txt");
string nextLine;
while ((nextLine = sr.ReadLine()) != null)
{
Console.WriteLine(nextLine);
}
sr.Close();
(二) 写入文件
写文件和读文件一样,如果你要写入的内容不是很多,可以使用File.WriteAllText方法来一次将内容全部写如文件。如果你要将一个字符串的内容写入文件,可以用File.WriteAllText(FilePath) 或指定编码方式 File.WriteAllText(FilePath, Encoding)方法。
string str1 = "Good Morning!"; File.WriteAllText(@"c:\temp\test\ascii.txt", str1); // 也可以指定编码方式 File.WriteAllText(@"c:\temp\test\ascii-2.txt", str1, Encoding.ASCII);
如果你有一个字符串数组,你要将每个字符串元素都写入文件中,可以用File.WriteAllLines方法:
string[] strs = { "Good Morning!", "Good Afternoon!" }; File.WriteAllLines(@"c:\temp\ascii.txt", strs); File.WriteAllLines(@"c:\temp\ascii-2.txt", strs, Encoding.ASCII);
使用File.WriteAllText或File.WriteAllLines方法时,如果指定的文件路径不存在,会创建一个新文件;如果文件已经存在,则会覆盖原文件。
当要写入的内容比较多时,同样也要使用流(Stream)的方式写入。.Net封装的类是StreamWriter。初始化StreamWriter类同样有很多方式:
// 如果文件不存在,创建文件; 如果存在,覆盖文件
StreamWriter sw1 = new StreamWriter(@"c:\temp\utf-8.txt");

// 也可以指定编码方式
// true 是 append text, false 为覆盖原文件
StreamWriter sw2 = new StreamWriter(@"c:\temp\utf-8.txt", true, Encoding.UTF8);

// FileMode.CreateNew: 如果文件不存在,创建文件;如果文件已经存在,抛出异常
FileStream fs = new FileStream(@"C:\temp\utf-8.txt", FileMode.CreateNew, FileAccess.Write, FileShare.Read);
// UTF-8 为默认编码
StreamWriter sw3 = new StreamWriter(fs);
StreamWriter sw4 = new StreamWriter(fs, Encoding.UTF8);

// 如果文件不存在,创建文件; 如果存在,覆盖文件
FileInfo myFile = new FileInfo(@"C:\temp\utf-8.txt");
StreamWriter sw5 = myFile.CreateText();
初始化完成后,可以用StreamWriter对象一次写入一行,一个字符,一个字符数组,甚至一个字符数组的一部分。
// 写一个字符
sw.Write('a');

// 写一个字符数组
char[] charArray = new char[100];
// initialize these characters
sw.Write(charArray);

// 写一个字符数组的一部分
sw.Write(charArray, 10, 15);
同样,StreamWriter对象使用完后,不要忘记关闭。sw.Close(); 最后来看一个完整的使用StreamWriter一次写入一行的例子:
FileInfo myFile = new FileInfo(@"C:\temp\utf-8.txt");
StreamWriter sw = myFile.CreateText();

string[] strs = { "早上好", "下午好" };
foreach (var s in strs)
{
sw.WriteLine(s);
}
sw.Close();
世爵龙
2013-05-24
知道答主
回答量:5
采纳率:0%
帮助的人:10.2万
展开全部
很简单啊,引入命名空间System.IO。然后用文件流的方式进行读写即可。相应的方法很多都是封装好的了。

           FileStream fs = new FileStream("你的文件路径包括后缀", FileMode.Open);
           StreamReader sr = new StreamReader(fs);
           string txt = sr.ReadToEnd();//整个文件的字符串都读取出来。
           StreamWriter sw = new StreamWriter(fs);
           sw.Write("你要写入的字符串");
           sw.Flush();

更多追问追答
追问
好吧我没还学io库→_→
追答
对你无语,不想理你,一边这里追问,一边采纳别人的,极度鄙视。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuanwei64
2013-05-24 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:153
采纳率:0%
帮助的人:136万
展开全部
还有看你读写什么文件啊,针对不能文件有不同的操作。比如xml txt excel
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱新觉罗20000
2013-05-24
知道答主
回答量:30
采纳率:0%
帮助的人:19万
展开全部
//省略些许判断(如有无该文件)
FileStream fs = new FileStream("a.txt", FileMode.Open);
StreamReader sr = new StreamReader(fs);//读取
string txt = sr.ReadToEnd();
StreamWriter sw = new StreamWriter(fs);//写入
sw.Write("写入");
sw.Flush();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
susanhare
2013-05-24 · TA获得超过133个赞
知道小有建树答主
回答量:323
采纳率:0%
帮助的人:166万
展开全部
输出日志的方法.你参考把
 /// <summary>
        /// 输出日志
        /// </summary>
        /// <param name="info"></param>
        public void Log(string info)
        {
            try
            {
                string name = System.DateTime.Now.ToString("yyyyMMdd");

                string path = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
                if (!Directory.Exists(path + "Log"))
                {
                    Directory.CreateDirectory(path + "Log");

                }

                path += "Log\\";

                if (!File.Exists(path + name + ".txt"))
                {
                    FileStream fs = new FileStream(path + name + ".txt", FileMode.OpenOrCreate);
                    fs.Close();
                    fs.Dispose();
                }

                StreamWriter sw = new StreamWriter(path + name + ".txt", true);
                sw.WriteLine(System.DateTime.Now.ToString() + ": " + info);
                sw.WriteLine("");
                sw.Close();

                sw.Dispose();
            }
            catch (Exception ex)
            {

            }
        }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式