C# Изменить каталог загруженных файлов

У меня есть следующий код, где он будет получать данные из stream и распечатать его в текстовый файл, используя streamwriter и буферизованный писатель. По умолчанию он загружает файл в каталог папки загрузки на вашем локальном компьютере. Проблема, с которой я сталкиваюсь сейчас, заключается в том, что я хотел бы изменить каталог загруженного файла на какой-то другой каталог, но я не смог этого добиться. Вместо этого я использую System.IO.File.WriteAllText чтобы добиться этого, но это не то, чего я хочу, так как код ниже загрузит два файла, один в папку загрузки, а другой в папку документа.

protected override void AddPlainText(Stream outputStream)
{
    var records = GetData();
    var x = new StringBuilder();
    string stamp = DateTime.Now.ToString("dd-MM-yy_HH-mm-ss", CultureInfo.InvariantCulture);
    string fileName = "reportTxt_" + stamp + ".txt";
    string path = @"C://Users//***//Documents//";
    string path2 = @"C:\Users\***\Documents\";

    using (var stream = new BufferedStream(outputStream))
    {
        var writer = new StreamWriter(stream, Encoding.ASCII);

        foreach (var r in records)
        {
            x.AppendLine(r.ToFixedLengthString());
        }
        var output = x.ToString();
        writer.WriteLine(output);
        writer.Flush();

        //Create File
        System.IO.File.WriteAllText(path + fileName, output);

        //Calling Transfer Method
        SFTP_Connection(fileName, path2);

        //Delete file after transfer
        if (File.Exists(path + fileName))
        {
            File.Delete(path + fileName);
        }
    }
 }

Любые советы, советы и помощь будут высоко ценится.

1 ответ

Решение

Из вашего описания, я думаю, вы, возможно, ошибочно предположили, что данные считываются из потока, фактически, во фрагменте кода, в который поток записывается.

Во-первых, данные извлекаются из этого вызова

var records = GetData();

А затем данные преобразуются в строку, и строка записывается в BufferedStream используя StreamWriterи, наконец, написано outputStream,

(BufferedStream используется в качестве буфера - таким образом, имя "BufferedStream" - для повышения производительности операции записи.)

Так что одна возможность состоит в том, что outputStream это FileStream созданный абонентом, и он создается в папке " Загрузки ".

Если это так, вам не нужно передавать outputStreamна самом деле, не создавайте его с самого начала!

После удаления ненужных потоков это все что вам нужно

var records = GetData();
var x = new StringBuilder();
string stamp = DateTime.Now.ToString("dd-MM-yy_HH-mm-ss", CultureInfo.InvariantCulture);
string fileName = "reportTxt_" + stamp + ".txt";
string path = @"C://Users//***//Documents//";
string path2 = @"C:\Users\***\Documents\";
foreach (var r in records)
{
    x.AppendLine(r.ToFixedLengthString());
}
//Create File
System.IO.File.WriteAllText(path + fileName, output);

//Calling Transfer Method
SFTP_Connection(fileName, path2);

//Delete file after transfer
if (File.Exists(path + fileName))
{
    File.Delete(path + fileName);
}

Другая возможность - звонок SFTP_Connection создает промежуточный файл в папке Downloads. Проверьте выполнение вызова точно.

Вам нужно войти в (F10/F11) код, чтобы проверить, на какой строке создается нежелательный файл.

Другие вопросы по тегам