-1

我想使用 StreamWriter 将文本写入文件。但文件名应该是当前日期名称。这是我的编码。有人可以告诉我如何指定文件创建路径吗?

代码编辑:在这里我想创建一个 .txt 文件,但在这里没有创建文件。

public void WriteToFile( string name, string source, int dest, string messageIn, string operatorNew)
{
   string directory = ResolveUrl("~/DesktopModules/SMSFunction/SMSText");
   string filename = String.Format("{0:yyyy-MM-dd}__{1}", DateTime.Now,name);
   string path = Path.Combine(directory, filename);

   if (!File.Exists(filename))
   {

       using (StreamWriter str = File.CreateText(path))
       {
           str.WriteLine("msisdn: " + source);
           str.WriteLine("shortcode : " + dest);
           str.WriteLine("Message : " + messageIn);
           str.WriteLine("Operator :" + operatorNew);
           str.Flush();

       }
   }
   else if (File.Exists(filename))
   {

       using (var str = new StreamWriter(filename)) 

       {
           str.WriteLine("msisdn: " + source);
           str.WriteLine("shortcode : " + dest);
           str.WriteLine("Message : " + messageIn);
           str.WriteLine("Operator :" + operatorNew);
           str.Flush();
       }

   }
4

4 回答 4

3

您需要进行以下更改

1.ResolveUrl替换为Server.MapPath

string directory = Server.MapPath("~/DesktopModules/SMSFunction/SMSText");

2.添加文件扩展名.txt,如下图

string filename = String.Format("{0:yyyy-MM-dd}__{1}.txt", DateTime.Now,name);

3.当你检查文件是否存在时,提供文件的路径,而不是文件名

File.Exists(path);

4.block下else if,这里也提供路径,而不是文件名

var str = new StreamWriter(path));

将所有代码放在一起看起来像,

 string directory = Server.MapPath("~/DesktopModules/SMSFunction/SMSText");
 string filename = String.Format("{0:yyyy-MM-dd}__{1}.txt", DateTime.Now, name);
 string path = Path.Combine(directory, filename);

    if (!File.Exists(path))
    {
        using (StreamWriter str = File.CreateText(path))
        {
            str.WriteLine("msisdn: " + source);
            str.WriteLine("shortcode : " + dest);
            str.WriteLine("Message : " + messageIn);
            str.WriteLine("Operator :" + operatorNew);
            str.Flush();
        }
    }
    else if (File.Exists(path))
    {
        using (var str = new StreamWriter(path))
        {
            str.WriteLine("msisdn: " + source);
            str.WriteLine("shortcode : " + dest);
            str.WriteLine("Message : " + messageIn);
            str.WriteLine("Operator :" + operatorNew);
            str.Flush();
     }
于 2012-08-17T11:45:22.383 回答
2

File.Create回报FileStream,你需要StreamWriter。您必须使用接受的构造函数Stream

using (var str = new StreamWriter(File.CreateText(path)))
于 2012-08-17T09:31:28.937 回答
0

简化,使用 FileStream 创建或覆盖您的文件(见下文),具体取决于您可能希望将FileMode更改为其他内容(附加?)

public void WriteToFile(string name, string source, int dest, string messageIn, string operatorNew)
{
    string directory = ResolveUrl("~/DesktopModules/SMSFunction/SMSText");
    string filename = String.Format("{0:yyyy-MM-dd}__{1}", DateTime.Now,name);
    string path = Path.Combine(directory, filename);

    using (FileStream fs = new FileStream(path, FileMode.Create))
    {
        using (StreamWriter str = new StreamWriter(fs))
        {
            str.WriteLine("msisdn: " + source);
            str.WriteLine("shortcode : " + dest);
            str.WriteLine("Message : " + messageIn);
            str.WriteLine("Operator :" + operatorNew);
            str.Flush();
        }
    }
}
于 2012-08-17T11:34:20.553 回答
0

假设您的控制台应用程序项目名称是 DataPrep。现在您可以通过创建一个名为 db.json 的新文件来写入数据目录位置

string filePath = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, @"..\..\..\")) + @"Data\db.json";
            if (!File.Exists(filePath))
            {
                using (StreamWriter _streamWriter = File.CreateText(filePath))
                {
                    _streamWriter.Write(resultAll);
                    _streamWriter.Flush();
                }
            }
            else if (File.Exists(filePath))
            {
                using (var _streamWriter = new StreamWriter(filePath))
                {
                    _streamWriter.Write(resultAll);
                    _streamWriter.Flush();
                }

            }
于 2019-10-24T19:21:38.320 回答