2015-12-16 7 views
0

Мне нужно создать файл csv каждый час. Мне нужно создать каталог для дня и в той же директории, в этот день я должен создать файл каждый часСоздайте файл csv каждый час?

public string CreateFile() 
{ 
    string rootDirectory = ConfigurationManager.AppSettings["BasePath"].ToString(); 
    string directoryName = "tracker-" + DateTime.Now.ToString("MM-dd-yyyy"); 
    string fileName = "tracker-" + DateTime.Now.ToString("MM-dd-yyyy") + ".csv"; //here i want the file to be for every hour 
    string directoryPath=Path.Combine(rootDirectory, directoryName) 
    string path = Path.Combine(directoryPath, filename); 
    if (!Directory.Exists(directoryName)) 
    { 
      Directory.CreateDirectory(directoryName); 
    } 

    if (!System.IO.File.Exists(path)) 
    { 
     System.IO.File.Create(path).Dispose(); 
     using (TextWriter tw = new StreamWriter(path)) 
     { 
      tw.WriteLine("New file created"); 
      tw.Close(); 
     } 
    } 
    return path; 
} 

Может ли один пожалуйста, помогите мне здесь.

+2

Используйте планировщик задач Windows. –

+0

Привет, попробуйте поместить час, минуты и секунды в свое пользовательское время форматирования даты: string fileName = "tracker-" + DateTime.Now.ToString ("HH: mm: ss MM-dd-yyyy") + ".csv"; // здесь я хочу, чтобы файл был на каждый час Надеюсь, что я помог! –

+0

Ваш вопрос _ «Как запустить исполняемый файл каждый час» _ или _ «Как добавить час к имени файла» _? На оба ответа был дан ответ, попробуйте выполнить поиск. @ Решение Джорджа не будет работать для последнего, поскольку у вас не может быть двоеточий (':') в именах файлов. И игнорируйте людей, говорящих, чтобы использовать таймер, который очень хрупкий. Решение Тима является правильным. – CodeCaster

ответ

0

Если вы имеете в виду, что вам нужно приложение, чтобы создать файл csv каждый час, то вы можете использовать Timer

Timer _tmrCsv = new Timer { Interval = 3600000 }; 
private void Form2_Load(object sender, EventArgs e) 
{ 
    _tmrCsv.Tick += _tmrCsv_Tick; 
    _tmrCsv.Enabled = true; 

} 

void _tmrCsv_Tick(object sender, EventArgs e) 
{ 
    CreateFile(); 
} 
+0

Ваш образец кода создаст файл каждые 60 часов! –

+0

@ S.Dav Ой! хороший улов. Починил это! –

0

Вы можете использовать Timer.

Вот пример кода:

private static System.Timers.Timer aTimer; 
private static int counter = 0; 
private static void SetTimer() 
{ 
    // Create a timer with a one minute interval. 
    aTimer = new System.Timers.Timer(60000); 
    // Hook up the Elapsed event for the timer. 
    aTimer.Elapsed += OnTimedEvent; 
    aTimer.AutoReset = true; 
    aTimer.Enabled = true; 
} 

    private static void OnTimedEvent(Object source, ElapsedEventArgs e) 
{ 
    //Increment the counter 
    counter++; 

    if (counter== 60) 
    { 
     // One hour has passed 
     // Reset the counter and create your file 
     counter = 0; 
     CreateFile(); 
    } 
} 
+0

Как получить текущий час, затем – SoftwareNerd

+0

@SoftwareNerd ** DateTime.Now.Hour ** –

+1

Почему бы просто не использовать таймер с интервалом в 1 час? –

Смежные вопросы