C#更改下载的文件目录

时间:2018-10-09 07:12:23

标签: c# streamwriter bufferedstream

我有以下代码,它将从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);
        }
    }
 }

任何建议,技巧和帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

根据您的描述,我认为您可能误认为数据是读取的,实际上,在代码片段中,该流曾经被写入 strong>。

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

var records = GetData();

然后将数据转换为字符串,并使用BufferedStream将字符串写入StreamWriter,最后写入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_Connection Downloads 文件夹中创建一个中间文件。确定要检查电话的实施情况。

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