Member 13954501 Ответов: 1

Как установить ограничение файла для текстового файла, который я хочу экспортировать (сохранить)


мне нужно написать журнал file.txt и нужно установить лимит текстового файла. если предел превышен, то журнал отдыха будет записан на другое имя (например file_1.txt). Я считываю данные из представления таблицы данных и экспортирую их в txt-файл. это работает, но я не знаю, как ограничить размер.

Что я уже пробовал:

private void ExportData(string path, string filename)
        {
            TextWriter writer = new StreamWriter(path);

            for (int j = 0; j < Dgv_Debug.Columns.Count ; j++)
            {
                if (Dgv_Debug.Columns[j].Visible == false)
                    continue;
                if (Dgv_Debug.Columns[j].HeaderText.ToString().Length < 8)
                {
                    writer.Write(Dgv_Debug.Columns[j].HeaderText.ToString() + "\t\t");
                }
                else
                {
                    writer.Write(Dgv_Debug.Columns[j].HeaderText.ToString() + "\t");
                }
            }
            writer.WriteLine("");
            

            for (int i = 0; i < Dgv_Debug.Rows.Count - 1; i++)
            {
                for (int j = 0; j < Dgv_Debug.Columns.Count; j++)
                {
                    if (Dgv_Debug.Columns[j].Visible == false)
                        continue;
                    writer.Write(Dgv_Debug.Rows[i].Cells[j].Value.ToString() + "\t\t");
                }
                writer.WriteLine("");                
            }
            writer.Close();
            MessageBox.Show("Data Exported");
        }

1 Ответов

Рейтинг:
1

Jochen Arndt

Просто получите фактическую длину файла и сравните ее.

Обратите внимание, что было бы лучше сохранить имя в переменной-члене класса, а не передавать его в качестве аргумента. Для упрощения создания имени можно использовать переменную для пути и целое число для количества файлов:

// Class members
int fileCount = 0;
string logDir = @"some_directory\";

// ...

// First call: fileCount zero indicates not yet determined
if (fileCount == 0)
{
    // Search directory for the file with the highest count here
    // If there is no file, set fileCount = 1
}
string path;
path.Format("{0}file_{1}.txt", logDir, fileCount);
if (System.IO.FileExists(path))
{
    long curLength = System.IO.FileInfo(path).Length;
    if (curLength >= maxLength)
    {
        fileCount++;
        path.Format("{0}file_{1}.txt", logDir, fileCount);
    }
}