新人问题:创建和写文件

johnjun18 2012-03-24 11:17:23
部分代码如下:
namespace myFile2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void btnCreate_Click(object sender, EventArgs e)
{
if (!File.Exists(@"E:\My File.dat"))
{
File.CreateText(@"E:\My File.dat");
}
}
private void btnWrite_Click(object sender, EventArgs e)
{
try
{
using (StreamWriter sw =(@"E:\My File.dat"))
{
sw.WriteLine("It is just a test");
sw.Close();
sw.Dispose();
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}

点击第一个按钮创建文件,接着点第二个按钮向文件写入一些内容。为什么会出现异常,说文件正在被另一个进程使用。
弄了一个小时也没有解决,发帖问问
另:因为创建文件和写入不是同时进行的,该怎么办
不要笑话我的问题低级啊
...全文
109 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ojekleen 2012-03-25
  • 打赏
  • 举报
回复


private void btnCreate_Click(object sender, EventArgs e)
{
if (!File.Exists(@"E:\My File.dat"))
{
File.CreateText(@"E:\My File.dat").Close();//此处释放数据流对文件的操作才会在下次BUTTON事件中写操作中不会被其他进程占有。
}
}
xxm30 2012-03-25
  • 打赏
  • 举报
回复
建议你安装MS的代码段,它会将这些简单而且常见的操作集成到代码段中,好处不言而喻,

如果你没有,我可以传一份给你!
色拉油 2012-03-25
  • 打赏
  • 举报
回复
正解[Quote=引用 4 楼 stonespace 的回复:]

其实你要写文件之前不一定要创建文件,可以用

FileStream fs = new FileStream(@"E:\My File.dat", FileMode.OpenOrCreate);
using (StreamWriter sw =(FileStream))
{
}

这样,如果文件还没创建会自动创建,如果已经创建则直接写已经存在的文件,
[/Quote]
johnjun18 2012-03-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xxm30 的回复:]

建议你安装MS的代码段,它会将这些简单而且常见的操作集成到代码段中,好处不言而喻,

如果你没有,我可以传一份给你!
[/Quote]

谢谢你的好意,我只是一个编程爱好者,初学,还是自己多动手写代码,多理解吧。
stonespace 2012-03-24
  • 打赏
  • 举报
回复
其实你要写文件之前不一定要创建文件,可以用

FileStream fs = new FileStream(@"E:\My File.dat", FileMode.OpenOrCreate);
using (StreamWriter sw =(FileStream))
{
}

这样,如果文件还没创建会自动创建,如果已经创建则直接写已经存在的文件,
porschev 2012-03-24
  • 打赏
  • 举报
回复


其实完全没有必要分两步,你可以把btnWrite_Click方法中这句修改一下,
不用点btnCreate_Click,其实直接就是你两部的效果

FileStream fs = new FileStream(@"E:\My File.dat", FileMode.Open);

------>

FileStream fs = new FileStream(@"E:\My File.dat", FileMode.OpenOrCreate);
stonespace 2012-03-24
  • 打赏
  • 举报
回复
File.CreateText(@"E:\My File.dat");返回一个 StreamWriter,这个方法不光会创建文件,还会打开新创建的文件,如果你只想创建文件不要用这个方法,

不知道关闭CreateText返回的StreamWriter是否能关闭文件,你可以试试,

不过最好不要用CreateText创建文件,
porschev 2012-03-24
  • 打赏
  • 举报
回复


private void btnCreate_Click(object sender, EventArgs e)
{

FileStream fs = new FileStream(@"E:\My File.dat", FileMode.OpenOrCreate);
fs.Dispose();
fs.Close();

}

private void btnWrite_Click(object sender, EventArgs e)
{
try
{

FileStream fs = new FileStream(@"E:\My File.dat", FileMode.Open);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("It is just a test");
sw.Flush();
sw.Close();
fs.Close();
fs.Dispose();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

}

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧