C# 文件“c:\config.txt”正在由另一进程使用,因此无法访问该文件
该程序的功能是获取各个控件中的内容并存privatevoidbutton4_Click(objectsender,EventArgse){stringfilename=@...
该程序的功能是获取各个控件中的内容并存
private void button4_Click(object sender, EventArgs e)
{
string filename = @"c:\config.txt";
int j = 0;
System.IO.StreamReader sr = new System.IO.StreamReader(filename);
System.IO.StreamWriter sw = new System.IO.StreamWriter(filename,true,Encoding.Default);
string line;
string tablename = textBox3.Text;
string tagname = listBox1.Text;
string starttime = dateTimePicker1.Text;
string endtime = dateTimePicker2.Text;
string interval = textBox1.Text;
string xlspath = textBox2.Text;
string[]a={tablename,tagname,starttime,endtime,interval,xlspath};
while ((line = sr.ReadLine())!=null)
{
sw.WriteLine(line + a[j]);
j++;
}
sr.Close();
sw.Close();
}
入到txt文件的指定行的末尾,但是每次运行输入数据总是报错(如标题所示),请问哪里有问题 展开
private void button4_Click(object sender, EventArgs e)
{
string filename = @"c:\config.txt";
int j = 0;
System.IO.StreamReader sr = new System.IO.StreamReader(filename);
System.IO.StreamWriter sw = new System.IO.StreamWriter(filename,true,Encoding.Default);
string line;
string tablename = textBox3.Text;
string tagname = listBox1.Text;
string starttime = dateTimePicker1.Text;
string endtime = dateTimePicker2.Text;
string interval = textBox1.Text;
string xlspath = textBox2.Text;
string[]a={tablename,tagname,starttime,endtime,interval,xlspath};
while ((line = sr.ReadLine())!=null)
{
sw.WriteLine(line + a[j]);
j++;
}
sr.Close();
sw.Close();
}
入到txt文件的指定行的末尾,但是每次运行输入数据总是报错(如标题所示),请问哪里有问题 展开
4个回答
展开全部
亲, System.IO.StreamReader sr = new System.IO.StreamReader(filename);
System.IO.StreamWriter sw = new System.IO.StreamWriter(filename,true,Encoding.Default);
你这样又读又写的。。所以提示被占用!
你的逻辑有问题,为什么要读写同一个文件,你这样做没意义。
去掉 System.IO.StreamReader sr = new System.IO.StreamReader(filename);
直接将内容写到文件末尾,还读一遍干吗
System.IO.StreamWriter sw = new System.IO.StreamWriter(filename,true,Encoding.Default);
你这样又读又写的。。所以提示被占用!
你的逻辑有问题,为什么要读写同一个文件,你这样做没意义。
去掉 System.IO.StreamReader sr = new System.IO.StreamReader(filename);
直接将内容写到文件末尾,还读一遍干吗
更多追问追答
追问
可是我是要向同一个文件添加数据啊,把那个去掉了下面就报错了
追答
你的txt文件时不是这种结构啊
tablename
tagname
starttime
endtime
interval
xlspath
内容要追加到每一行的结尾处?
2013-07-22
展开全部
你那txt 文件是不是打开这呢?
不对,你应该在写之前先关闭读取的流,就是改成
sr.Close();
while ((line = sr.ReadLine())!=null)
{
sw.WriteLine(line + a[j]);
j++;
}
不对,你应该在写之前先关闭读取的流,就是改成
sr.Close();
while ((line = sr.ReadLine())!=null)
{
sw.WriteLine(line + a[j]);
j++;
}
更多追问追答
追问
没有打开啊,还是不行呢,一样的错误
追答
哦,你加断点,看看哪里报的异常。
应该这样写那就,
string filename = @"c:\config.txt";
int j = 0;
System.IO.StreamReader sr = new System.IO.StreamReader(filename);
string line;
string tablename = textBox3.Text;
string tagname = listBox1.Text;
string starttime = dateTimePicker1.Text;
string endtime = dateTimePicker2.Text;
string interval = textBox1.Text;
string xlspath = textBox2.Text;
string[]a={tablename,tagname,starttime,endtime,interval,xlspath};
sr.Close();
System.IO.StreamWriter sw = new System.IO.StreamWriter(filename,true,Encoding.Default);while ((line = sr.ReadLine())!=null)
{
sw.WriteLine(line + a[j]);
j++;
}
sw.Close();
这样应该是好使了。要是再不好使你加断点看看哪里报的异常
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以将读和写分开,因为读写不能同时进行,修改代码如下
string filename = @"D:\config.txt";
int j = 0;
System.IO.StreamReader sr = new System.IO.StreamReader(filename);
string line;
string tablename = textBox3.Text;
string tagname = listBox1.Text;
string starttime = dateTimePicker1.Text;
string endtime = dateTimePicker2.Text;
string interval = textBox1.Text;
string xlspath = textBox2.Text;
string[] a = { tablename, tagname, starttime, endtime, interval, xlspath };
string[] b = new string[6];
while ((line = sr.ReadLine()) != null)
{
b[j] = line;
j++;
}
sr.Close();
System.IO.File.Delete(filename);
System.IO.StreamWriter sw = new System.IO.StreamWriter(filename, true, Encoding.Default);
for (int i = 0; i < a.Length; i++)
{
sw.WriteLine(b[i] + a[i]);
}
sw.Close();
string filename = @"D:\config.txt";
int j = 0;
System.IO.StreamReader sr = new System.IO.StreamReader(filename);
string line;
string tablename = textBox3.Text;
string tagname = listBox1.Text;
string starttime = dateTimePicker1.Text;
string endtime = dateTimePicker2.Text;
string interval = textBox1.Text;
string xlspath = textBox2.Text;
string[] a = { tablename, tagname, starttime, endtime, interval, xlspath };
string[] b = new string[6];
while ((line = sr.ReadLine()) != null)
{
b[j] = line;
j++;
}
sr.Close();
System.IO.File.Delete(filename);
System.IO.StreamWriter sw = new System.IO.StreamWriter(filename, true, Encoding.Default);
for (int i = 0; i < a.Length; i++)
{
sw.WriteLine(b[i] + a[i]);
}
sw.Close();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先读出关闭读,然后再写。
追问
关闭了while那里就报异常了
追答
全部读完到一个list里面,然后修改内容,最后你再覆盖写到文件中。
System.IO.StreamReader sr = new System.IO.StreamReader(filename);
List<string> strList=new List<string>();
string line;
string tablename = textBox3.Text;
string tagname = listBox1.Text;
string starttime = dateTimePicker1.Text;
string endtime = dateTimePicker2.Text;
string interval = textBox1.Text;
string xlspath = textBox2.Text;
string[]a={tablename,tagname,starttime,endtime,interval,xlspath};
while (!sr.EndOfStream)
{
strList.Add(sr.ReadLine());
}
sr.Close();
System.IO.StreamWriter sw = new System.IO.StreamWriter(filename,true,Encoding.Default);
for(int j=0;j<strlist.count;j++)
{
sw.WriteLine(line + a[j]);
}
sw.Close();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |