C#中,读取1个c语言读取txt文件数据,请问如何先读第1行,再读剩下的?因为这2部分的信息是不同的,谢谢。

C#创建一个TXT文件,怎样可更改其中某一行数据?_百度知道
C#创建一个TXT文件,怎样可更改其中某一行数据?
用WriteLine写入多行数据?怎样可以读出某一行数据,怎样可以更改其中某一行数据?请各位手帮忙?怎样可以删除某一行数据
没有高手吗?还是不知我在问什么?
我有更好的答案
r&#92文件处理是按照顺序方式读取而并不是按照“行”的方式读取的,行的概念只是VBCrlf或者\n之类的特殊字符而已
其他类似问题
为您推荐:
txt文件的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁1:c#中哪个using指令 包含startupinfo 定义,坐等回复。 2:能告诉我c#中读取文件的格式吗,详细些哦_百度知道
1:c#中哪个using指令 包含startupinfo 定义,坐等回复。 2:能告诉我c#中读取文件的格式吗,详细些哦
\a\d这个地方),这代码应该怎么写呢(包括要用到的using指令也写出来吧;b\c&#92,大家帮帮忙喽,现在我要在c#中运行这个bat文件(就当发生在一个click事件中吧),谢谢) 我再提高10个悬赏吧我具体些吧
就比如我现将桌面上一个写有dos指令的txt文件保存为bat文件(然后存放在D
提问者采纳
009usingS实例一个Process类;/D;a\/&#47:&#92usingSc\/设定程序名p.Db&#92,启动一个独立进程
Process p = newProcess().exe&quot.Md;Process类有一个StartInfo属性&#47.FileName = &&#47
按你说的写usingSystem.D usingSystem.Mprivate void button1_Click(object sender,EventArgs e){
if(checkBox1.checked == true)
Process p = newProcess();
p.StartInfo.FileName = &D:\a\b\c\d.exe&;
}}StartInfo下出现了波浪线显示“System.Diagnostics.Process不包含StartInfo的定义...&好像还是不行啊?
提问者评价
来自团队:
其他类似问题
为您推荐:
其他2条回答
c?using(StreamReader a = new StreamReader(@&quot、在MSDN里搜索了一下;a,没有startupinfo 这样的定义,倒是有startupindex之类2;)){Console1.txt&quot、读取文件格式是什么意思:&#92.Write(a.ReadToEnd())?读取文件内容吗
startupinfo 应该是自定义的吧
是你引用的其他动态库中的类型(变量),.net framework 中不包含他的定义;关于第二个问题,文件的格式也是你自己定义的,可以使txt、ini、config格式文件,具体如何访问 你百度下就有了
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁&& 查看话题
【求助】Fortran 如何读取文件中特定行的内容
现有一个文件,是100列,300万行的矩阵,我想读特定行,例如300行的数据,请问应如何用fortran处理
以前本版好像讨论过类似的问题,建议仔细找一找。 用do命令不就可以吗?
open(文件)
do I=1,3000000
& & if (i==300) then
& && &do j=1,100& &&&
& && && & read(*,*) x
& && &end do
& &&&end if& &
不知道,我是否正确的理解你的意思了。上面的程序中exit是为了避免在进行循环。 先用DO循环跳过前299行,再读取第300行不就得了? 在彭国伦的书中第九章讲到,文件有顺序访问和直接访问,采用直接访问的话,你这个问题就可以高效的解决掉了。(彭国伦的书在这个论坛上有)
如果每一行数据的长度是x,那么你采用直接访问的手段,从299x+1读到300x,就读出第300行的数据了。 我的意思是不用do循环,直接读指定行数的数据,因为我要算每一列得自相关函数,就是求第一行与第二行的点积,加上第二行第三行的点积-----第300万,第300万+1的点积,然后平均,得到一个时间步长的自相关函数,求第1行与第3行的点积,加上第2行第4行的点积-----第300万,第300万+2的点积,然后平均,得到两个时间步长的自相关函数值,依次类推,求第500个自相关函数值.所以用do的方法肯定不行.楼上的方法没明白,能给个语句么? open(unit=10, file=filename, access="direct", form="formatted", recl=几, tatus="old")
read(10, fmt="(格式)", rec=想要的行数, IOSTAT=error)&&x
其中“recl=几”是你要读文件的每一行的字符数,如果是文本文件,则要在相应字符数上加2,你试一下吧 彭国伦编的书fortran95程序设计中有,你看一下就知道了 六楼的方法应该可行 请问字符数是什么意思,空格也算么 字符数,就是字符的个数,而字符有数字,字母,还有特殊字符,在文本格式下一个字符的单位就是1byte,而空格应该是占字节数的 Originally posted by zhangzhiguang at
字符数,就是字符的个数,而字符有数字,字母,还有特殊字符,在文本格式下一个字符的单位就是1byte,而空格应该是占字节数的 请问如果每一行的字符数不同怎么办. 这还真就不太好办 Originally posted by digghost at
请问如果每一行的字符数不同怎么办. 你用的是矩阵,可以用补空格之类的方法将矩阵的每一行弄成一样的
如果你的矩阵时自己生成的话,可以设定输出的格式保证每一行的字符数是一样的 : Originally posted by zhangzhiguang at
open(unit=10, file=filename, access="direct", form="formatted", recl=几, tatus="old")
read(10, fmt="(格式)", rec=想要的行数, IOSTAT=error)&&x
其中“recl=几”是你要读文件的每一行的字符数,如果是文本 ... 您好,麻烦问您一下有关文件的和直接访问的问题。
read(10, fmt=&(格式)&, rec=想要的行数, IOSTAT=error)&&x
这里如果我想访问的这一行,有好几个数据,也就是说,我每一个有7个数据,我把每一行定义为一个模块,当我要访问第N行的时候,这个read应该怎么写?
&&read (20, '(f20.5)', rec=N, IOSTAT=error) Force(:,N)
这个格式对吗?还是应该写成
&&read (20, '(f20.5)', rec=N, IOSTAT=error) Force(1,N),Force(2,N),Force(3,N),Force(4,N),Force(5,N),Force(6,N),Force(7,N)
感谢您的帮助 其实 你可以先把这个 100列 300万行 的 文件 ,处理成 二进制的文件,那肯定是 等长的,就是每一行的 字节数是相等的。然后 用 二进制 读取 直接文件 的 方法,就很好办了。[导读]FileStream对象表示在磁盘或网络路径上指向文件的流。这个类提供了在文件中读写字节的方法,但经常使用StreamReader或StreamWriter执行这些功能。这是因为FileSt
FileStream对象表示在磁盘或网络路径上指向文件的流。这个类提供了在文件中读写字节的方法,但经常使用StreamReader或StreamWriter执行这些功能。这是因为FileStream类操作的是字节和字节数组,而Stream类操作的是字符数据。字符数据易于使用,但是有些操作,比如随机文件访问(访问文件中间某点的数据),就必须由FileStream对象执行,稍后对此进行介绍。
还有几种方法可以创建FileStream对象。构造函数具有许多不同的重载版本,最简单的构造函数仅仅带有两个参数,即文件名和FileMode枚举值。
FileStream aFile = new FileStream(filename, FileMode.Member);
FileMode枚举有几个成员,规定了如何打开或创建文件。稍后介绍这些枚举成员。另一个常用的构造函数如下:
FileStream aFile = new FileStream(filename, FileMode.Member, FileAccess. Member);
第三个参数是FileAccess枚举的一个成员,它指定了流的作用。FileAccess枚举的成员如表22-6所示。
对文件进行不是FileAccess枚举成员指定的操作会导致抛出异常。此属性的作用是,基于用户的身份验证级别改变用户对文件的访问权限。
在FileStream构造函数不使用FileAccess枚举参数的版本中,使用默认值FileAccess. ReadWrite。
FileMode枚举成员如表22-7所示。使用每个值会发生什么,取决于指定的文件名是否表示已有的文件。注意这个表中的项表示创建流时该流指向文件中的位置,下一节将详细讨论这个主题。除非特别说明,否则流就指向文件的开头。
File和FileInfo类都提供了OpenRead()和OpenWrite()方法,更易于创建FileStream对象。前者打开了只读访问的文件,后者只允许写入文件。这些都提供了快捷方式,因此不必以FileStream构造函数的参数形式提供前面所有的信息。例如,下面的代码行打开了用于只读访问的Data.txt文件:
FileStream aFile = File.OpenRead(&Data.txt&);
注意下面的代码执行同样的功能:
FileInfo aFileInfo = new FileInfo(&Data.txt&);
FileStream aFile = aFile.OpenRead();
1. 文件位置
FileStream类维护内部文件指针,该指针指向文件中进行下一次读写操作的位置。在大多数情况下,当打开文件时,它就指向文件的开始位置,但是此指针可以修改。这允许应用程序在文件的任何位置读写,随机访问文件,或直接跳到文件的特定位置上。当处理大型文件时,这非常省时,因为马上可以定位到正确的位置。
实现此功能的方法是Seek()方法,它有两个参数:第一个参数规定文件指针以字节为单位的移动距离。第二个参数规定开始计算的起始位置,用SeekOrigin枚举的一个值表示。Seek Origin枚举包含3个值:Begin、Current和End。
例如,下面的代码行将文件指针移动到文件的第8个字节,其起始位置就是文件的第1个字节:
aFile.Seek(8,SeekOrigin.Begin);
下面的代码行将指针从当前位置开始向前移动2个字节。如果在上面的代码行之后执行下面的代码,文件指针就指向文件的第10个字节:
aFile.Seek(2,SeekOrigin.Current);
注意读写文件时,文件指针也会改变。在读取了10个字节之后,文件指针就指向被读取的第10个字节之后的字节。
也可以规定负查找位置,这可以与SeekOrigin.End枚举值一起使用,查找靠近文件末端的位置。下面的代码会查找文件中倒数第5个字节:
aFile.Seek(&5, SeekOrigin.End);
以这种方式访问的文件有时称为随机访问文件,因为应用程序可以访问文件中的任何位置。稍后介绍的Stream类可以连续地访问文件,不允许以这种方式操作文件指针。
2. 读取数据
使用FileStream类读取数据不像使用本章后面介绍的StreamReader类读取数据那样容易。这是因为FileStream类只能处理原始字节(raw byte)。处理原始字节的功能使FileStream类可以用于任何数据文件,而不仅仅是文本文件。通过读取字节数据,FileStream对象可以用于读取图像和声音的文件。这种灵活性的代价是,不能使用FileStream类将数据直接读入字符串,而使用StreamReader类却可以这样处理。但是有几种转换类可以很容易地将字节数组转换为字符数组,或者进行相反的操作。
FileStream.Read()方法是从FileStream对象所指向的文件中访问数据的主要手段。这个方法从文件中读取数据,再把数据写入一个字节数组。它有三个参数:第一个参数是传输进来的字节数组,用以接受FileStream对象中的数据。第二个参数是字节数组中开始写入数据的位置。它通常是0,表示从数组开端向文件中写入数据。最后一个参数指定从文件中读出多少字节。
下面的示例演示了从随机访问文件中读取数据。要读取的文件实际是为此示例创建的类文件。
试试看:从随机访问文件中读取数据
(1) 在目录C:/BegVCSharp/Chapter22下创建一个新的控制台应用程序ReadFile。
(2) 在Program.cs文件的顶部添加下面的using指令:
using System.Collections.G
using System.T
using System.IO;
(3) 在Main()方法中添加下面的代码:
static void Main(string[] args)
byte[] byData = new byte[100];
char[] charData = new Char[100];
FileStream aFile = new FileStream(&../../Program.cs&,FileMode.Open);
aFile.Seek(135,SeekOrigin.Begin);
aFile.Read(byData,0,200);
catch(IOException e)
Console.WriteLine(&An IO exception has been thrown!&);
Console.WriteLine(e.ToString());
Console.ReadKey();
Decoder d = Encoding.UTF8.GetDecoder();
d.GetChars(byData, 0, byData.Length, charData, 0);
Console.WriteLine(charData);
Console.ReadKey();
(4) 运行应用程序。结果如图22-2所示。
示例的说明
此应用程序打开自己的.cs文件,用于读取。它在下面的代码行中使用..字符串向上逐级导航两个目录,找到该文件:
FileStream aFile = new FileStream(&../../Program.cs&,FileMode.Open);
下面两行代码实现查找工作,并从文件的具体位置读取字节:
aFile.Seek(135,SeekOrigin.Begin);
aFile.Read(byData,0,200);
第一行代码将文件指针移动到文件的第135个字节。在Program.cs中,这是namespace的 &n&;其前面的135个字符是using指令和相关的#region。第二行将接下来的200个字节读入到byData字节数组中。
注意这两行代码封装在try&catch块中,以处理可能抛出的异常。
aFile.Seek(135,SeekOrigin.Begin);
aFile.Read(byData,0,100);
catch(IOException e)
Console.WriteLine(&An IO exception has been thrown!&);
Console.WriteLine(e.ToString());
Console.ReadKey();
文件IO涉及到的所有操作都可以抛出类型为IOException的异常。所有产品代码都必须包含错误处理,尤其是处理文件系统时更是如此。本章的所有示例都具有错误处理的基本形式。
从文件中获取了字节数组后,就需要将其转换为字符数组,以便在控制台显示它。为此,使用System.Text命名空间的Decoder类。此类用于将原始字节转换为更有用的项,比如字符:
Decoder d = Encoding.UTF8.GetDecoder();
d.GetChars(byData, 0, byData.Length, charData, 0);
这些代码基于UTF8编码模式创建了Decoder对象。这就是Unicode编码模式。然后调用GetChars()方法,此方法提取字节数组,将它转换为字符数组。完成之后,就可以将字符数组输出到控制台。
3. 写入数据
向随机访问文件中写入数据的过程与从中读取数据非常类似。首先需要创建一个字节数组;最简单的办法是首先构建要写入文件的字符数组。然后使用Encoder对象将其转换为字节数组,其用法非常类似于Decoder。最后调用Write()方法,将字节数组传送到文件中。
下面构建一个简单的示例演示其过程。
试试看:将数据写入随机访问文件
(1) 在C:/BegVCSharp/Chapter22目录下创建一个新的控制台应用程序WriteFile。
(2) 如上所示,在Program.cs文件顶部添加下面的using指令:
using System.Collections.G
using System.T
using System.IO;
(3) 在Main()方法中添加下面的代码:
static void Main(string[] args)
byte[] byD
char[] charD
FileStream aFile = new FileStream(&Temp.txt&, FileMode.Create);
charData = &My pink half of the drainpipe.&.ToCharArray();
byData = new byte[charData.Length];
Encoder e = Encoding.UTF8.GetEncoder();
e.GetBytes(charData, 0, charData.Length, byData, 0, true);
// Move file pointer to beginning of file.
aFile.Seek(0, SeekOrigin.Begin);
aFile.Write(byData, 0, byData.Length);
catch (IOException ex)
Console.WriteLine(&An IO exception has been thrown!&);
Console.WriteLine(ex.ToString());
Console.ReadKey();
(4) 运行该应用程序。稍后就将其关闭。
(5) 导航到应用程序目录 && 在目录中已经保存了文件,因为我们使用了相对路径。目录位于WriteFile/bin/Debug文件夹。打开Temp.txt文件。可以在文件中看到如图22-3所示的文本。
示例的说明
此应用程序在自己的目录中打开文件,并在文件中写入了一个简单的字符串。在结构上这个示例非常类似于前面的示例,只是用Write()代替了Read(),用Encoder代替了Decoder。
下面的代码行使用String类的ToCharArray()静态方法,创建了字符数组。因为C#中的所有事物都是对象,文本&My pink half of the drainpipe.&实际上是一个String对象,所以甚至可以在字符串上调用这些静态方法。
CharData = & My pink half of the drainpipe. &.ToCharArray();
下面的代码行显示了如何将字符数组转换为FileStream对象需要的正确字节数组。
Encoder e = Endoding.UTF8.GetEncoder();
e.GetBytes(charData,0,charData.Length, byData,0,true);
这次,要基于UTF8编码方法来创建Encoder对象。也可以将Unicode用于解码。这里在写入流之前,需要将字符数据编码为正确的字节格式。在GetBytes()方法中可以完成这些工作,它可以将字符数组转换为字节数组,并将字符数组作为第一个参数(本例中的charData),将该数组中起始位置的下标作为第二个参数(0表示数组的开头)。第三个参数是要转换的字符数量(charData.Length,charData数组中的元素个数)。第四个参数是在其中置入数据的字节数组(byData),第五个参数是在字节数组中开始写入位置的下标(0表示byData数组的开头)。
最后一个参数决定在结束后Encoder对象是否应该更新其状态,即Encoder对象是否仍然保留它原来在字节数组中的内存位置。这有助于以后调用Encoder对象,但是当只进行单一调用时,这就没有什么意义。最后对Encoder的调用必须将此参数设置为true,以清空其内存,释放对象,用于垃圾回收。
之后,使用Write()方法向FileStream写入字节数组就非常简单:
aFile.Seek(0,SeekOrigin.Begin);
aFile.Write(byData,0,byData.Length);
与Read()方法一样,Write()方法也有三个参数:要写入的数组,开始写入的数组下标和要写入的字节数。
感谢来自网络
的文章 dezai   
    关键字:
特别注意:本站所提供的资讯 文章,教程,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除或修改。
特别感谢:本站所有文章 图画 设计作品的原创作者,感谢所有文章的来源及出处的杂志或资讯媒体.
与之相关的文章
与之相关的资源C#读取一个不断加入新行的TXT文件的方法
[问题点数:40分]
C#读取一个不断加入新行的TXT文件的方法
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2015年6月 .NET技术大版内专家分月排行榜第一2015年5月 .NET技术大版内专家分月排行榜第一2015年4月 .NET技术大版内专家分月排行榜第一
2015年3月 .NET技术大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 matlab读取txt文件 的文章

 

随机推荐