该程序的功能是获取各个控件中的内容并存
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文件的指定行的末尾,但是每次运行输入数据总是报错(如标题所示),请问哪里有问题
可是我是要向同一个文件添加数据啊,把那个去掉了下面就报错了
追答你的txt文件时不是这种结构啊
tablename
tagname
starttime
endtime
interval
xlspath
内容要追加到每一行的结尾处?
是的,研究了一天还是没有满意的结果,想哭了
追答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);
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)
{
a[j]=a[j]+line;
j++
}
sr.Close();
sr.Dispose();
//循环写入,覆盖源文件
System.IO.StreamWriter sw = new System.IO.StreamWriter(filename,false,Encoding.Default);
foreach(var data in a)
{
sw.WriteLine(data);
}
sw.Close();
sw.Dispose();
}
按你的改后又出现这个,也是我经常碰到的错误!!
出现这个问题的原因在于你的行数大于了6行,致使j>=6了,然后数组a的最大索引为5,所以造成数组越界。你调试跟踪一下。
tablename:t1 t1 t1 t1
tagname:tag1 tag1 tag1 tag1
starttime:start1 start1 start1 start1
endtime:end1 end1 end1 end1
interval:in1 in1 in1 in1
xlspath:path1 path1 path1 path1
这是我执行后的文件内容,没有错误啊!你要保证文件只有6行
a[j] = line + a[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();
这样应该是好使了。要是再不好使你加断点看看哪里报的异常
System.IO.StreamWriter sw = new System.IO.StreamWriter(filename,true,Encoding.Default); 这这句话报异常,还是不行呀
追答while ((line = sr.ReadLine())!=null)
这是要干什么?
你需要读取之后关闭流,然后再写。
不能读和写的流同时打开,因为他们都是以独占的方式打开
就是一行一行的读取文件内容吧
追答可以像楼下说的使用list存储读出来的东西,
但不能以这种方式边读边写,写之前要将读的流关闭。
关闭了while那里就报异常了
追答全部读完到一个list里面,然后修改内容,最后你再覆盖写到文件中。
System.IO.StreamReader sr = new System.IO.StreamReader(filename);C# 文件“c:\\config.txt”正在由另一进程使用,因此无法访问该文件
该程序的功能是获取各个控件中的内容并存 private void button4_Click(object sender, EventArgs e) { string filename = @"c:\\config.txt"; int j = 0; System.IO.StreamReader sr = new Sy... 展开 ftafxjdi110 | 浏览2521 次 |举报 我有更好的答案推荐于2017-12-16 15:05:55 最佳答案 亲, ...
C# 文件“c:\\config.txt”正在由另一进程使用,因此无法访问该文件
去掉 System.IO.StreamReader sr = new System.IO.StreamReader(filename);直接将内容写到文件末尾,还读一遍干吗
C#中操作txt,抛出“正由另一进程使用,因此该进程无法访问此文件”
在C#中,当尝试操作txt文件时,可能会遇到“正由另一进程使用,因此该进程无法访问此文件”的错误。这是因为多个并发的进程或线程试图同时读写同一个文件,导致了权限冲突。针对这个问题,有以下解决步骤:首先,你需要创建一个新的控制台应用程序。在这个程序中,你需要导入System.Diagnostics命名空间,因为...
C#中操作txt,抛出“正由另一进程使用,因此该进程无法访问此文件”
出现这个问题的原因是多个进程或线程同时读写文件导致的。解决方法如下:1、首先新建一个控制台程序。2、然后导入进程相关的操作类,主要是diagnostics。3、然后调用Process类的GetProcesses方法,获取系统所以进程,注意是一个数组。4、来看一下Process的相关解释说明,把鼠标放上去,看到如下图所示的内容。...
C#中txt文本正由另一进程使用,因此该进程无法访问该文件。
这个方法打开文件的时候是以只读共享的方式打开的,但若此文件已被一个拥有写权限的进程打开的话,就无法读取了,因此需要使用 System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open,System.IO.FileAccess.Read,FileShare.ReadWrite);设置文件共享方式为读写,FileShare....
c# 移动文件 正由另一进程使用,因此该进程无法访问该文件。
这是个IOException 因为文件同时在操作,如果你是多线程程序的话。例:object locker = new object();\/\/每个线程操作时,请先加锁 lock(locker){ }
C# 文件xxxxx 正由另一进程使用,因此该进程无法访问该文件!!!
在你得这个程序中,如果在Sw.Close();语句执行以前程序抛出了一场,那么streamwriter和filestream是不能够正常关闭的,这样,当下一次执行这个方法的时候,就会出现无法访问文件的问题。try {...} catch {...} finnaly { sw.close();sw.dispose();fsw.close();fsw.dispose();} 另外,建议你用...
...整由另一个进程使用,因此该进程无法访问次文件”
对文件的操作没有及时释放资源
...时异常:文件“**”正由另一进程使用,因此该进程无法访问该文件。
把文件关闭。可能是你打开一个文件或是你程序后台打开一个文件,但是没有关闭这个进程。导致的写错误。最好是用任务管理器结束你的之前可能打开文件的进程,
C# 另一个进程正在使用它,怎么才能找到正在使用它的这个进程呢
楼主您好:当C#弹出提示或者报错说有“另外一个进程正在使用该文件”时,这个情况一般可以分为:1、有可能是你自己当前的C#程序代码中调用这个文件结束后,没有及时关闭这个文件的流操作,导致下次调用时,系统会判断到你这个文件没有被关闭,一直处于打开读取状态,就会报这个错误,最好的解决办法是,文件...