我有以下代码,它将从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);
}
}
}
任何建议,技巧和帮助将不胜感激。
答案 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),以检查在哪一行创建了不需要的文件。