问题描述
privatevoidbutton1_Click(objectsender,EventArgse){OpenFileDialogofd=newOpenFileDialog();ofd.Filter="(*.*)|*.*";ofd.RestoreDirectory=true;if(ofd.ShowDialog()==DialogResult.OK){textBox6.Text=ofd.FileName;FileStreamfs=newFileStream(ofd.FileName,FileMode.Open,FileAccess.Read);StreamReadersr=newStreamReader(fs);try{ofd.OpenFile();stringline=sr.ReadLine();while(line!=null){stringstr=@"";string[]bit=str.Split(',');stringa=bit[2].ToString();//时间stringb=bit[3].ToString();//时间指示符stringc=bit[4].ToString();//纬度stringd=bit[5].ToString();//南北半球标示stringe1=bit[6].ToString();//经度stringf=bit[7].ToString();//东西半球标示stringg=bit[8].ToString();//航速stringh=bit[9].ToString();//航向stringi=bit[21].ToString();//真风速stringj=bit[22].ToString();//真风向stringk=bit[26].ToString();//气压stringl=bit[28].ToString();//气温stringm=bit[30].ToString();//湿度}}catch(Exceptionex){MessageBox.Show(ex.Message.ToString());}finally{sr.Close();fs.Close();}}}privatevoidbutton2_Click(objectsender,EventArgse){if(!(Directory.Exists(@"D:temp"))){Directory.CreateDirectory(@"D:temp");}stringcbz="CQD";strings=dateTimePicker2.Value.ToString("yyyyMM");stringfilePath=@"D:temp"+textBox3.Text+""+s+""+textBox2.Text+"."+cbz+".txt";if(File.Exists(filePath)){labelResult.ForeColor=Color.Red;labelResult.Text="当前文件已经存在!";return;}FileStreamfs=newFileStream(filePath,FileMode.Create);StreamWritersw=newStreamWriter(fs);try{sw.Write(textBox4.Text);sw.Flush();labelResult.ForeColor=Color.Green;labelResult.Text="写入数据完成!";}catch(Exceptionex){MessageBox.Show(ex.Message.ToString());}finally{sw.Close();fs.Close();}}我现在通过button2,在红色标记的位置,是否可以将我button1里打开的文件,并解析的写入到这个位置?怎么写这段代码???另外button1里,现在有错吗?执行起来是没报错的,用split给“,”去掉,然后分别截取的
解决方案
解决方案二:
LZ先去看点基础知识吧,就一个简单的字符串操作加IO操作问题,你已经反复问了N个问题了,这个N至少大于3连下面这段代码都不会改……stringline=sr.ReadLine();while(line!=null){//stringstr=@"";string[]bit=line.Split(',');
解决方案三:
红色部分,如何将a,b,c,d....写入过去?
解决方案四:
textBox4.Text=a+","+b+……
解决方案五:
参考一下:http://www.cnblogs.com/akwwl/p/3240813.html另外大量的字符串拼接请考虑StringBuilder
解决方案六:
引用3楼starfd的回复:
textBox4.Text=a+","+b+……
呵呵,真的是麻烦您了,我快40岁了,现在弄编程确实有点吃力。以前我主要是做设计的,没办法。另外感谢4楼给的链接,我正在学习。
解决方案七:
textBox4.Text=a+","+b+……但是如果button1打开的文件有多行怎么办?
解决方案八:
按钮1功能只要查询就行,读取和写入到新文件改到按钮2里,这样设计比较合理些。
解决方案九:
引用5楼qqqqmmmmmm的回复:
呵呵,真的是麻烦您了,我快40岁了,现在弄编程确实有点吃力。以前我主要是做设计的,没办法。另外感谢4楼给的链接,我正在学习。
你这话让我心里哇凉哇凉的……我也奔4了
解决方案十:
引用
我快40岁了
相信看见这句话的人,心里都会抽一下
解决方案十一:
引用5楼qqqqmmmmmm的回复:
Quote: 引用3楼starfd的回复:
textBox4.Text=a+","+b+……呵呵,真的是麻烦您了,我快40岁了,现在弄编程确实有点吃力。以前我主要是做设计的,没办法。另外感谢4楼给的链接,我正在学习。
加油
解决方案十二:
别抽搐,来问题了。为什么提示是非法的空路径?privatevoidbutton1_Click(objectsender,EventArgse){OpenFileDialogofd=newOpenFileDialog();ofd.Filter="(*.*)|*.*";ofd.RestoreDirectory=true;if(ofd.ShowDialog()==DialogResult.OK){textBox6.Text=ofd.FileName;FileStreamfs=newFileStream(ofd.FileName,FileMode.Open,FileAccess.Read);try{ofd.OpenFile();}catch(Exceptionex){MessageBox.Show(ex.Message.ToString());}finally{fs.Close();}}}privatevoidbutton2_Click(objectsender,EventArgse){if(!(Directory.Exists(@"D:temp"))){Directory.CreateDirectory(@"D:temp");}stringcbz="CQD";strings=dateTimePicker2.Value.ToString("yyyyMM");stringfilePath=@"D:temp"+textBox3.Text+""+s+""+textBox2.Text+"."+cbz+".txt";if(File.Exists(filePath)){labelResult.ForeColor=Color.Red;labelResult.Text="当前文件已经存在!";return;}OpenFileDialogofd=newOpenFileDialog();FileStreamfs=newFileStream(ofd.FileName,FileMode.Create);StreamReadersr=newStreamReader(fs);StreamWritersw=newStreamWriter(fs);try{stringline=sr.ReadLine();while(line!=null){stringstr=@"";string[]bit=str.Split(',');stringa=bit[2].ToString();//时间stringb=bit[3].ToString();//时间指示符stringc=bit[4].ToString();//纬度stringd=bit[5].ToString();//南北半球标示stringe1=bit[6].ToString();//经度stringf=bit[7].ToString();//东西半球标示stringg=bit[8].ToString();//航速stringh=bit[9].ToString();//航向stringi=bit[21].ToString();//真风速stringj=bit[22].ToString();//真风向stringk=bit[26].ToString();//气压stringl=bit[28].ToString();//气温stringm=bit[30].ToString();//湿度listBox1.Text=a+b+c;}sw.Write(listBox1.Text);sw.Flush();labelResult.ForeColor=Color.Green;labelResult.Text="写入数据完成!";}catch(Exceptionex){MessageBox.Show(ex.Message.ToString());}finally{sr.Close();sw.Close();fs.Close();}}
解决方案十三:
stringline=sr.ReadLine();while(line!=null){stringstr=@"";string[]bit=str.Split(',');stringa=bit[2].ToString();//时间stringb=bit[3].ToString();//时间指示符stringc=bit[4].ToString();//纬度stringd=bit[5].ToString();//南北半球标示stringe1=bit[6].ToString();//经度stringf=bit[7].ToString();//东西半球标示stringg=bit[8].ToString();//航速stringh=bit[9].ToString();//航向stringi=bit[21].ToString();//真风速stringj=bit[22].ToString();//真风向stringk=bit[26].ToString();//气压stringl=bit[28].ToString();//气温stringm=bit[30].ToString();//湿度}
我是来吐槽的弱弱的问一句你的a-m的变量似乎压根就没有用过啊还有还有str变量的值不是空字符串吗你split出来的bit确认不会数组访问越界?、、