小弟要写一个c#窗体程序出错的程序大体如下:
private void button1_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "文件(ccvt)|*.ccvt;|Ccvt压缩文件(*.ccvt)|*.ccvt";
if (sfd.ShowDialog() != DialogResult.OK)
return;
Compress(sfd.FileName);//这是自己写的函数,本意只是需要要写入的文件路径和文件名而 在这函数中自己创建文件流然后写入
}但是运行以后,文件创建了却只是0字节大小。无语的是,改成下面这样,却能正常输出所应当有的大小的文件
private void button1_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "文件(ccvt)|*.ccvt;|Ccvt压缩文件(*.ccvt)|*.ccvt";
if (sfd.ShowDialog() != DialogResult.OK)
return;
Compress(@"C:\t\tt.ccvt");//这是自己写的函数,本意只是需要要写入的文件路径和文件名而 在这函数中自己创建文件流然后写入
}也调试了,两种情况下,分别去看了传给Compress函数的参数都是同样的"C:\\t\\tt.ccvt"呀!
想不通,望高手指教。
private void button1_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "文件(ccvt)|*.ccvt;|Ccvt压缩文件(*.ccvt)|*.ccvt";
if (sfd.ShowDialog() != DialogResult.OK)
return;
Compress(sfd.FileName);//这是自己写的函数,本意只是需要要写入的文件路径和文件名而 在这函数中自己创建文件流然后写入
}但是运行以后,文件创建了却只是0字节大小。无语的是,改成下面这样,却能正常输出所应当有的大小的文件
private void button1_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "文件(ccvt)|*.ccvt;|Ccvt压缩文件(*.ccvt)|*.ccvt";
if (sfd.ShowDialog() != DialogResult.OK)
return;
Compress(@"C:\t\tt.ccvt");//这是自己写的函数,本意只是需要要写入的文件路径和文件名而 在这函数中自己创建文件流然后写入
}也调试了,两种情况下,分别去看了传给Compress函数的参数都是同样的"C:\\t\\tt.ccvt"呀!
想不通,望高手指教。
你的这个string是想获取保存文件的路径,那一般我们都是@,标识是路径,或者是转义符号。
还有你可以先把Compress()函数简化一下,参数传递进去后就简单地写一个字符串"abc",然后就关闭文件。看看能否写入。
那个Compress是定义为 void Compress(string fileName),里面挺乱的就不写了
其中将fileName又传给了另一个函数void WriteFile(string fileName)
然后在WriteFile中就
using (FileStream stream = new FileStream(fileName, FileMode.Create, FileAccess.Write))
{...各种stream.Write....}
传来传去的,但是fileName只是字符串而已啊,不能随意传吗?
为什么Compress输入参数为@"C:\t\tt.ccvt"是可以正常运行呢?
不是说SaveFileDialog只是获取要存储的文件路径和文件名吗?难道调用它的是候它创建了文件并且锁住了不让写????
saveFileDialog.Filter = "Execl files (*.xls)|*.xls";
saveFileDialog.FilterIndex = 0;
saveFileDialog.Title = "";
saveFileDialog.FileName ="";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{string name = saveFileDialog.FileName;}
private void button1_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "文件(ccvt)|*.ccvt;|Ccvt压缩文件(*.ccvt)|*.ccvt";
if (sfd.ShowDialog() != DialogResult.OK)
{
Compress(sfd.FileName);
}
}
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "文件(ccvt)|*.ccvt;|Ccvt压缩文件(*.ccvt)|*.ccvt";
if (sfd.ShowDialog() == DialogResult.OK)
{
Compress(sfd.FileName);
}
}
private void button1_Click(object sender, EventArgs e)
{
....
if (sfd.FileName != "")
{
System.IO.Stream stream = sfd.OpenFile();/貌似就是这里把写好的文件又清空了
length = (float)stream.Length;
}
label11.Text = Math.Round(length / 1024, 2) + "MB";
}我自己提问的时候没有把问题说清楚,对不起大家了。。