-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");

.txt2.以下 のようにファイル拡張子を追加します

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

3.ファイルが存在するかどうかを確認する場合、ファイル名の代わりにファイルのパスを指定します

File.Exists(path);

4.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 に答える