Создание нового файла .txt с датой впереди, C # - PullRequest
3 голосов
/ 02 июня 2009

Я пытаюсь получить следующее: [сегодняшняя дата] ___ [текстовое имя файла] .txt из следующего кода:

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

namespace ConsoleApplication29
{
    class Program
    {
        static void Main(string[] args)
        {
            WriteToFile();

        }

        static void WriteToFile()
        {

            StreamWriter sw;
            sw = File.CreateText("c:\\testtext.txt");
            sw.WriteLine("this is just a test");
            sw.Close();
            Console.WriteLine("File created successfully");



        }
    }
}

Я пытался вставить DateTime.Now.ToString(), но я не могу объединить строки.

Кто-нибудь может мне помочь? Я хочу указывать в ПЕРЕДНЕМ заголовке дату создания нового текстового файла.

Ответы [ 4 ]

20 голосов
/ 02 июня 2009
static void WriteToFile(string directory, string name)
{
    string filename = String.Format("{0:yyyy-MM-dd}__{1}", DateTime.Now, name);
    string path = Path.Combine(directory, filename);
    using (StreamWriter sw = File.CreateText(path))
    {
        sw.WriteLine("This is just a test");
    }
}

Для звонка:

WriteToFile(@"C:\mydirectory", "myfilename");

Обратите внимание на несколько вещей:

  • Укажите дату в строке произвольного формата и избегайте использования недопустимых символов в NTFS.
  • Префикс строк, содержащих пути, с помощью строкового литерального маркера '@', поэтому вам не нужно избегать обратной косой черты в пути.
  • Объедините части пути с помощью Path.Combine () и избегайте обходов с помощью разделителей пути.
  • Использовать блок using при создании StreamWriter; выход из блока избавит StreamWriter и автоматически закройте файл для вас.
12 голосов
/ 02 июня 2009

Вы хотите создать пользовательский формат строки в DateTime.Now. Вы можете использовать String.Format (), чтобы объединить результаты этого с вашим базовым именем файла.

Чтобы добавить путь к имени файла, используйте Path.Combine ().

Наконец, используйте блок using () для правильного закрытия и удаления вашего StreamWriter, когда закончите с ним ...

string myFileName = String.Format("{0}__{1}", DateTime.Now.ToString("yyyyMMddhhnnss"), "MyFileName");
strign myFullPath = Path.Combine("C:\\Documents and Settings\\bob.jones\\Desktop", myFileName)
using (StreamWriter sw = File.CreateText(myFullPath))
{
    sw.WriteLine("this is just a test");
}

Console.WriteLine("File created successfully");

Редактировать: исправлен пример для учета пути к «C: \ Documents and Settings \ bob.jones \ Desktop»

1 голос
/ 02 июня 2009

Попробуйте это:

string fileTitle = "testtext.txt";
string fileDirectory = "C:\\Documents and Settings\username\My Documents\";
File.CreateText(fileDirectory + DateTime.Now.ToString("ddMMYYYY") + fileTitle);

0 голосов
/ 02 июня 2009

Чтобы ответить на вопрос в вашем комментарии к @ Скотту Айви : чтобы указать, куда записывается файл, добавьте нужный путь к имени файла до или в вызове CreateText ().

Например:

String path = new String (@"C:\Documents and Settings\bob.jones\Desktop\");
StreamWriter sw = File.CreateText(path + myFileName);

или

String fullFilePath = new String (@"C:\Documents and Settings\bob.jones\Desktop\");
fullFilePath += myFileName;
StreamWriter sw = File.CreateText(fullFilePath);
...