C#学习教程:打开文本文件,循环内容并检查我想读取文本文件的内容(仅包含数字)并检查每一行的数字并使用isNumberValid来验证它是否是有效数字。然后我想将结果输出到一个新的文本文件,我得到了这个:privatevoidbutton2_Click(objectsender,EventArgse){intsize=-1;DialogResult结果=openFileDialog1.ShowDialog();//显示对话框。if(result==DialogResult.OK)//测试结果。{字符串文件=openFileDialog1.FileName;尝试{stringtext=File.ReadAllText(file);size=text.Length;using(StringReaderreader=newStringReader(text)){foreach(intnumberintext){//检查isNumberValid//将结果写入新的文本文件}}}catch(IOException){}}}可以帮助?文本文件在列表中包含多个数字:456445654455等。我想写的新文本文件只是在末尾附加了true或false的数字:4564是的,你可以试试这个来保持你最初遵循的模式......私人voidbutton1_Click(objectsender,EventArgse){DialogResultresult=openFileDialog1.ShowDialog();//显示对话框。if(result==DialogResult.OK)//测试结果。{字符串文件=openFileDialog1.FileName;尝试使用(varreader=newStreamReader(文件)){使用(varwriter=newStreamWriter("results.txt")){stringcurrentNumber;while((currentNumber=reader.ReadLine())!=null){if(IsNumberValid(currentNumber))writer.WriteLine(String.Format("{0}true",currentNumber));}}}}catch(IOException){}}}publicboolIsNumberValid(stringnumber){//无论你用什么代码来检查你的号码}你不需要一次将整个文件读入内存你可以写:使用(varwriter=newStreamWriter(outputPath)){foreach(varlineinFile.ReadLines(filename){foreach(varnuminline.Split(',')){writer.Write(num+"");.WriteLine(IsNumberValid(num));}}}这里的主要优点是内存占用要小得多,因为它一次只加载文件的一小部分。你需要用这样的东西替换循环:string[]lines=File.ReadAllLines(file);foreach(varsinlines){intnumber=int.Parse(s);...}这将读取文件的每一行,假设每行只有一个数字,并且行用CRLF符号分隔。并将每个数字解析为整数,假设整数不大于2,147,483,647且不小于-2,147,483,648,并且整数存储在您的语言环境设置中,有或没有组分隔符。如果任何一行为空,或包含非整数-将抛出代码异常。你可以尝试这样的事情:FileStreamfsIn=newFileStream(fileName,FileMode.Open,FileAccess.Read,FileShare.Read);使用(StreamReadersr=newStreamReader(fsIn)){line=sr.ReadLine();while(!String.IsNullOrEmpty(line){line=sr.ReadLine();//在每一行上调用isNumberValid,将结果存储到列表}}然后使用FileStream打印列表。正如其他人提到的,您的isNumberValid方法可以使用Int32.TryParse方法,但是因为你说你的文本文件只包含数字,所以这可能不是必需的。如果你只想精确匹配数字,你可以使用number==line。首先,将输入文件的所有行加载到一个字符串数组,然后打开输出文件并循环遍历字符串数组,在空格分隔符处拆分每一行,并将每一部分传递给静态方法。如果输入文本不是有效的Int32数字,则静态方法使用Int32。TryParse在不抛出异常的情况下确定是否存在有效整数。根据此方法的结果将所需文本写入输出文件。//读取内存中的所有行(可以优化,但对于这个例子,让我们使用一个小文件)string[]lines=File.ReadAllLines(file);//使用(StringWriterwriter=newStringWriter(outputFile))打开输出文件{//在从输入文件加载的每一行上循环//示例“1234ABCD456ZZZZ98989”foreach(字符串一行一行){//拆分想成为数字的当前行string[]numParts=line.Split('');//循环每个部分并传递给验证foreach(stringnumberinnumParts){//将结果写入输出文件if(isNumberValid(number))writer.WriteLine(number+"True");elsewriter.WriteLine(number+"False");}}}//接收一个字符串并测试它是否是Int32数字publicstaticboolisNumberValid(stringNumber){intresult;返回Int32.TryParse(数字,输出结果);}当然,这只有在'number'的定义等于Int32数据类型的允许值的情况下才有效。有用,需要了解更多C#学习教程,希望大家多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
