如何写入txt文件

时间:2015-12-11 01:49:50

标签: c# .net visual-studio

我有我认为会写入txt文件的代码,但它无效。路径确实存在,但txt文件本身不存在,这就是为什么我有“if”语句。我不确定问题出在哪里,因为代码运行并编译没有错误。任何帮助都会有用。说明:

创建一些执行以下操作的日志记录代码。

创建一个日志记录类。 字段

文件名

构造(字符串) 将文件名设置为参数。 如果文件不存在,则创建该文件。

打开文件并添加一行文本,指示日期。

方法 采用字符串消息和日志级别枚举的Log方法(Debug,Warn,Info,Error) 此方法将以附加模式打开文件,并使用以下格式将消息和枚举添加为新行:

LogLevel(格式为6个字符)时间(HH:mm:ss.ffff)消息

主 创建日志对象。 使用warn枚举值使用消息调用日志对象。 使用debug枚举值使用消息调用日志对象。 使用info枚举值使用消息调用日志对象。 使用错误枚举值使用消息调用日志对象。

以下是代码:

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

namespace Logging
{
    public class Log
    {
        public enum Levels { Debug, Warn, Info, Error};

        private string path = @"C:\Users\eliotta1130\Desktop\CSharp\Labs\Logging.txt";

        //public string Path { get; set; }
        //public Levels Levels { get; set; }

        public Log(string path)
        {
            this.path = path;
            if(!File.Exists(path))
            {
                File.Create(path);
            }
            StreamWriter textOut = new StreamWriter( new FileStream(
                                                    path, FileMode.Open, FileAccess.Write));
            textOut.WriteLine(DateTime.Now);

            textOut.Close();
        }
        public void tWrite(Levels levels, string message)
        {
            StreamWriter fs = new StreamWriter( new FileStream(path, FileMode.Append, FileAccess.Write));
            fs.WriteLine(string.Format("{0}, {1}", DateTime.Now.ToString("HH:mm:ss.ffff")), message);
            fs.Close();
        }

    }
}

这是我试图调用类对象的地方。

namespace Logging
{
    class Logging
    {
        static void Main(string[] args)
        {
            Log files = new Log("Logging.txt");

            files.tWrite(Log.Levels.Debug , "Fix the problem");
            files.tWrite(Log.Levels.Warn , "Fix the problem");
            files.tWrite(Log.Levels.Info , "Fix the problem");
            files.tWrite(Log.Levels.Error , "Fix the problem");
        }
    }
}

3 个答案:

答案 0 :(得分:3)

代码似乎正常运行。

但是,由于您使用"Logging.txt"创建文件而没有路径,因此您的文件将在bin\debug文件夹中创建,您应该在那里看到日志。

或者如果您需要桌面路径,可以使用以下代码:

var fullPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
                            , "Logging.txt")

并使用fullPath创建文件。

另外,要在文件中附加一行,您只需使用以下代码:

var outPut = string.Format("{0}, {1}", DateTime.Now.ToString("HH:mm:ss.ffff")), message);
System.IO.File.AppendAllLines(path, new string[]{outPut});

答案 1 :(得分:0)

您可以像下面这样使用:

  File.WriteAllText("your path", "The text to write to the file"); 

或者,您可以使用AppendAllText()

将文本附加到现有文件中
  File.AppendAllText("your path", "The text to write to the file");

其中File位于using System.IO;命名空间。

所以你的编码就像这样:

    public Log(string path)
    {
        this.path = path;
        if(!File.Exists(path))
        {
            File.Create(path);
        }
    }
    public void tWrite(Levels levels, string message)
    {
       string contentToWrite=string.Format("{0}, {1}", DateTime.Now.ToString("HH:mm:ss.ffff")), message);
       File.AppendAllText(path, contentToWrite);
    }

答案 2 :(得分:0)

你也可以这样写

import cx_Oracle


def test_oracle():
    connection = cx_Oracle.connect('user', 'password', 'tns')
    try:
        cursor = connection.cursor()
        cursor.execute('SELECT day_no,area_code ,start_date from dic.b_td_m_area where rownum<10')

        #only print head
        title = [i[0] for i in cursor.description]
        print(title)

        # column info
        for x in cursor.description:
            print(x)

    finally:
        cursor.close()


if __name__ == "__main__":
    test_oracle();

请注意,第二个参数为true表示它会将您的消息附加到现有文本中。