C# 更改下载的文件目录

C# Change downloaded file directory

我有以下代码,它将从 stream 检索数据并使用 streamwriter 和 bufferedwriter 将其打印到文本文件。默认情况下,它会将文件下载到本地 pc 的下载文件夹目录中。我现在面临的问题是我想将下载文件的目录更改为其他目录,但我无法实现这些。相反,我使用 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);
        }
    }
 }

我们将不胜感激任何建议、提示和帮助。

根据你的描述,我想你可能误以为数据是流中读取的,事实上,在代码片段中,流被用来写入.

首先,从此调用中检索数据

var records = GetData();

然后将数据转换成字符串,字符串用一个StreamWriter写到BufferedStream,最后写到outputStream

BufferedStream 用作缓冲区 - 因此名称 'BufferedStream' - 为了提高写操作的性能。)

所以一种可能是 outputStream 是由调用者创建的 FileStream,它是在 Downloads 文件夹中创建的。

如果是这种情况,你不需要通过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_ConnectionDownloads 文件夹中创建一个中间文件。确认调用的实现。

您需要进入 (F10/F11) 代码以检查在哪一行创建了不需要的文件。