0

我的代码是-

Stream myStream;
saveFileDialog1 = new SaveFileDialog();

saveFileDialog1.Filter = "Ticket files (*.tkt)|*.tkt";
saveFileDialog1.FilterIndex = 1;
saveFileDialog1.RestoreDirectory = true;
saveFileDialog1.Title = "Save text Files";

if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
   myStream = saveFileDialog1.OpenFile();
   if (myStream != null)
   {
       StreamWriter wText = new StreamWriter(myStream);
       string st = gettxt();
       wText.Write(st);
       //wText.WriteLine("sdfsderfsdsf");
       myStream.Close();
    }
}

每当我取消注释 Writeline 和注释 write(st) 什么都没有写入.. 并且字符串应该具有特定长度然后只有数据保存在 tkt 文件中.. 最后一个问题是如果文本太大那么部分文本是只写..请帮帮我

4

3 回答 3

1

尝试

if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
   TextWriter tw = new StreamWriter(saveFileDialog1.FileName);
   tw.WriteLine(gettxt());
   tw.Close();
}

希望这可以帮助。

于 2011-03-04T21:21:45.370 回答
0

除了读取文件的应用程序出现问题外,没有什么方法可以解释这个问题。请注意,您正在编写 .txt 文件,它可能不一定与 .tkt 文件格式兼容。不管那看起来像什么。一方面,该文件将包含一个 BOM,文件开头的 3 个字节表示它是一个 utf-8 格式的文本文件。

您可以尝试更好地诊断问题的一件事:

   using (var wText = new StreamWriter(myStream, Encoding.Default)) {
       string st = gettxt();
       wText.Write(st);
       //wText.WriteLine("sdfsderfsdsf");
   }

Encoding 参数指定字符应该写在默认代码页中并且没有 BOM。

于 2011-03-04T21:35:08.953 回答
0
saveFileDialog1 = new SaveFileDialog();

saveFileDialog1.Filter = "Ticket files (*.tkt)|*.tkt";
saveFileDialog1.FilterIndex = 1;
saveFileDialog1.RestoreDirectory = true;
saveFileDialog1.Title = "Save text Files";

if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
    using (Stream myStream = saveFileDialog1.OpenFile())
    {
        using (StreamWriter wText = new StreamWriter(myStream))
        {
            wText.WriteLine(gettext());
        }
    }
}
于 2011-03-04T21:28:30.800 回答