0

我有以下代码,它将使用和 bufferedwriter从中检索数据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);
        }
    }
 }

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

4

1 回答 1

0

根据您的描述,我认为您可能错误地认为数据是流中读取的,实际上,在代码片段中,流是用于写入.

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

var records = GetData();

然后将数据转换为字符串,BufferedStream使用 a写入字符串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);
}

另一种可能性是调用会在DownloadsSFTP_Connection文件夹中创建一个中间文件。确保检查调用的实现。

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

于 2018-10-09T09:05:58.463 回答