none
如何创建“Txt”文件,并在“.Txt”文件中写入信息 RRS feed

  • 问题

  • Master,求这样的实例,或是代码实例。

    一个Winform窗体,它有两个“Textbox”,一个用来输入“txt”文件名,一个用来输入“txt文件中的内容”。

    在窗体上还有一个“Button”按钮,点击按钮,根据输入的文件名和内容创建“txt”文件到“项目下的Log文件夹”下。

    Science and technology is my lover.

    2013年1月10日 8:59

答案

  • 你好!

         参考如下代码:

    FileStream fs1 = new FileStream("F:\\TestTxt.txt", FileMode.Create, FileAccess.Write);//创建写入文件
    StreamWriter sw = new StreamWriter(fs1);
    sw.WriteLine(this.textBox3.Text.Trim() + "+" + this.textBox4.Text);//开始写入值

    sw.Close();
    fs1.Close();

    希望对你有帮助!


    周雪峰

    2013年1月10日 9:13
    版主
  • 基本可以按 雪峰 的方案去做

    但是有几点要注意以下

    1、创建文件要确保创建文件的文件夹存在避免发生错误。

     string directory = System.AppDomain.CurrentDomain.BaseDirectory + "Logfiles";
    
                if (!Directory.Exists(directory))
                    Directory.CreateDirectory(directory);

    2、最好也判断一下要建立的文件是否存在,不存在则创建,否则为追加。

           string logFileDir = string.Format("{0}\\ex{1}", directory, DateTime.Today.ToString("yyyy-MM-dd"));
    
                string logFileName = logFileDir + ".txt";
    
    
                if (!File.Exists(logFileName))
                    File.Create(logFileName).Close();

    添加数据的方法如下

    StreamWriter output;
                output = File.AppendText(logFileName);
     output.WriteLine("要加的内容");
     output.WriteLine();
    output.Close();

     

    认真的活,认真的爱!

    2013年1月10日 14:57
    版主

全部回复

  • 你好!

         参考如下代码:

    FileStream fs1 = new FileStream("F:\\TestTxt.txt", FileMode.Create, FileAccess.Write);//创建写入文件
    StreamWriter sw = new StreamWriter(fs1);
    sw.WriteLine(this.textBox3.Text.Trim() + "+" + this.textBox4.Text);//开始写入值

    sw.Close();
    fs1.Close();

    希望对你有帮助!


    周雪峰

    2013年1月10日 9:13
    版主
  • 基本可以按 雪峰 的方案去做

    但是有几点要注意以下

    1、创建文件要确保创建文件的文件夹存在避免发生错误。

     string directory = System.AppDomain.CurrentDomain.BaseDirectory + "Logfiles";
    
                if (!Directory.Exists(directory))
                    Directory.CreateDirectory(directory);

    2、最好也判断一下要建立的文件是否存在,不存在则创建,否则为追加。

           string logFileDir = string.Format("{0}\\ex{1}", directory, DateTime.Today.ToString("yyyy-MM-dd"));
    
                string logFileName = logFileDir + ".txt";
    
    
                if (!File.Exists(logFileName))
                    File.Create(logFileName).Close();

    添加数据的方法如下

    StreamWriter output;
                output = File.AppendText(logFileName);
     output.WriteLine("要加的内容");
     output.WriteLine();
    output.Close();

     

    认真的活,认真的爱!

    2013年1月10日 14:57
    版主
  • File.Create(LogFileName).Close();

    未能找到路径“E:\Test\TxtFile\TxtFile\bin\Debug\LogFiles\2013年\1月\11日\44分52秒115毫秒测试-测试.txt”的一部分。

    路径,不能太深是吗???   多少层不行呢???


    Science and technology is my lover.

    2013年1月11日 5:46
  • 大师,总是提示:

    未能找到路径“E:\Test\TxtFile\TxtFile\bin\Debug\LogFiles\20130111\测试5424195.txt”的一部分。

               

     private void button1_Click(object sender, EventArgs e)
            {
                string logname = textBox1.Text.Trim();
                string logcontent = textBox2.Text.Trim();

                TxtHelper txthelper = new TxtHelper();
    txthelper.WriteLog(logname, logcontent);
            }

                                                 

    Master,目录只能“string logFileDir = string.Format("{0}\\{1}", directory, logname+DATime);”这样两级吗???   三级菜单就会报错啊。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;

    namespace TxtFile
    {
       public class TxtHelper
        {
           public void WriteLog(string LogName, string LogContent)
           {
               //日志文件按照,时日月年分开
               DateTime DANow=DateTime.Now;
               //string Year=DANow.Year.ToString()+"年";
               //string Month=DANow.Month.ToString()+"月";
               //string Day=DANow.Day.ToString()+"日";
               //string DATime=DANow.ToString("mm分ss秒fff毫秒");
               string DADate = DANow.ToString("yyyyMMdd");

               string DATime = DANow.ToString("mmssfff");

               string directory = System.AppDomain.CurrentDomain.BaseDirectory + "LogFiles";

               if (!Directory.Exists(directory))
                   Directory.CreateDirectory(directory);

               //string LogFileDir = string.Format("{0}\\{1}\\{2}\\{3}\\{4}", directory, Year, Month, Day, DATime+LogName);

               string LogFileDir = string.Format("{0}\\{1}\\{2}", directory, DADate, LogName + DATime);

               string LogFileName = LogFileDir + ".txt";


               if (!File.Exists(LogFileName))
               {
     File.Create(LogFileName).Close();
                   StreamWriter output;
                   output = File.AppendText(LogFileName);
                   output.WriteLine(LogContent);

                   output.Close();
               }
               else
               {
                   StreamWriter output;
                   output = File.AppendText(LogFileName);
                   output.WriteLine(LogContent);

                   output.Close();
               }
           }
        }
    }


    Science and technology is my lover.


    2013年1月11日 5:56
  • 路径可以很深的,稍等我把例子写出来给你。

    认真的活,认真的爱!

    2013年1月11日 6:06
    版主
  • File.Create(LogFileName).Close();

    未能找到路径“E:\Test\TxtFile\TxtFile\bin\Debug\LogFiles\2013年\1月\11日\44分52秒115毫秒测试-测试.txt”的一部分。

    路径,不能太深是吗???   多少层不行呢???


    Science and technology is my lover.

    不是因为太深的问题,而是你要建立文件所在的文件夹还没有被建立,所以无法在那个文件夹创建文件

    我根据你的代码做了下修改,具体如下

    把  

    System.AppDomain.CurrentDomain.BaseDirectory + "LogFiles";


    修改成 

    string directory = string.Format("{0}{1}\\{2}", System.AppDomain.CurrentDomain.BaseDirectory, "LogFiles", DADate);

    具体的代码如下,你可以参考一下,希望对你有帮助。

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                TxtHelper.WriteLog("日志名称", "日志的内容");
            }
        }
    
        public class TxtHelper
        {
            public static void WriteLog(string LogName, string LogContent)
            {
                //日志文件按照,时日月年分开
                DateTime DANow = DateTime.Now;
                //string Year=DANow.Year.ToString()+"年";
                //string Month=DANow.Month.ToString()+"月";
                //string Day=DANow.Day.ToString()+"日";
                //string DATime=DANow.ToString("mm分ss秒fff毫秒");
                string DADate = DANow.ToString("yyyyMMdd");
    
                string DATime = DANow.ToString("mmssfff");
    
                string directory = string.Format("{0}{1}\\{2}", System.AppDomain.CurrentDomain.BaseDirectory, "LogFiles", DADate);
    
                if (!Directory.Exists(directory))
                    Directory.CreateDirectory(directory);
    
                string LogFileDir = directory + "\\" + LogName + DATime;
    
                string LogFileName = LogFileDir + ".txt";
    
    
                if (!File.Exists(LogFileName))
                {
                    File.Create(LogFileName).Close();
                    StreamWriter output;
                    output = File.AppendText(LogFileName);
                    output.WriteLine(LogContent);
    
                    output.Close();
                }
                else
                {
                    StreamWriter output;
                    output = File.AppendText(LogFileName);
                    output.WriteLine(LogContent);
    
                    output.Close();
                }
            }
        }
    }
    


    认真的活,认真的爱!

    2013年1月11日 6:18
    版主
  • Thanks  a  lot...

    这样就可以了啊。

    string directory = System.AppDomain.CurrentDomain.BaseDirectory + string.Format("{0}\\{1}\\{2}\\{3}", "LogFiles",Year,Month,Day);

    Science and technology is my lover.

    2013年1月11日 7:25
  • Thanks  a  lot...

    这样就可以了啊。

    string directory = System.AppDomain.CurrentDomain.BaseDirectory + string.Format("{0}\\{1}\\{2}\\{3}", "LogFiles",Year,Month,Day);

    Science and technology is my lover.


    是的,主要还是抓住一个原则,要建立的文件所在的文件夹必须要存在。

    认真的活,认真的爱!

    2013年1月11日 7:35
    版主
  • 你好!

        如果目录不存在,要新建目录才可以啊。


    周雪峰

    2013年1月11日 9:17
    版主