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) код, чтобы проверить, на какой строке создается нежелательный файл.