学生发帖求指教用BinaryReader和BinaryWriter读写二进制文件问题 在读取方法处,设置一个断点,然后单步调试执行,看会不会发生异常。可以看看官方的例子。http://msdn.microsoft.com/zh-cn/library/system.io.binaryreader.aspx 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace WindowsFormsApplication1{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string fileName = "MyNew.data";//定义字符串变量存储文件名字符串 if (File.Exists(fileName))//判断文件是否存在 { MessageBox.Show("当前文件已经存在"); } else { FileStream fs = new FileStream(fileName, FileMode.Create); //使用FileStream类创建文件 BinaryWriter writer = new BinaryWriter(fs);//将BinaryWriter类实例化 writer.Write(textBox1.Text); //调用BinaryWriter类的Write()方法将文本框中的数据写入 for (int i = 0; i < 300; i++) { writer.Write(10 + i); } MessageBox.Show("写入文件成功"); textBox1.Text = "";//关闭BinaryWriter流 fs.Close();//关闭FileStream流 } } private void button2_Click(object sender, EventArgs e) { string fileName = "MyNew.data";//定义字符串变量存储文件名字符串 if (!(File.Exists(fileName)))//判断要读取的文件是否存在 { MessageBox.Show("当前文件不存在"); return; } string strData = ""; FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); //以读取已有文件的方式创建FileStream的实例对象 BinaryReader reader = new BinaryReader(fs);//实例化BinaryReader类 strData = reader.ReadString();//调用BinaryReader的ReadString方法 for (int i = 0; i < 300; i++)//循环读取文件内容 { if (i == 0) { strData += reader.ReadInt32().ToString(); //每次读取4个字节带符号的整数值,并转换为字符串类型 } else { strData += " || " + reader.ReadInt32().ToString(); } } textBox2.Text = strData;//读取的文件内容显示在textBox2中 fs.Close();//关闭文件流对象 reader.Close();//关闭二进制文件读对象存储文件名字符串 } }}测试成功。 “using System.Threading.Tasks;”vs2008用不了这个。。 你报异常出在strData += reader.ReadInt32().ToString();而不是ReadString。因为你文件中没有足够的整数。 我只是贴我完整的代码啦。没用到的。writer.Write(textBox1.Text); //调用BinaryWriter类的Write()方法将文本框中的数据写入 for (int i = 0; i < 300; i++) { writer.Write(10 + i); }这两个语句不是将数据写入文件的两种方法吗,为什么注释掉一种就不能成功运行呢? 有关汉邦DVR开发的问题!! 关于串口读写的问题。 remoting简单问题,请帮帮我 一个UserControl模块加载的问题 !!!列值的比较问题!!!!!! 请教几个关于GDI+绘制地图的问题? 用C#写的BS结构的程序,我修改了数据库中的一项值后想通知其他机器,让他们来取新数据,能用Socket做吗? 怎么错了(我刚学,想先问问)? 请问在C#中应该怎样实现如QQ参数设置那样的界面? C#写的程序怎么会出现C++的错误提示呢? 这个问题怎么解决? 请问下这个界面是怎么做得
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
string fileName = "MyNew.data";//定义字符串变量存储文件名字符串
if (File.Exists(fileName))//判断文件是否存在
{
MessageBox.Show("当前文件已经存在");
}
else
{
FileStream fs = new FileStream(fileName, FileMode.Create);
//使用FileStream类创建文件
BinaryWriter writer = new BinaryWriter(fs);//将BinaryWriter类实例化
writer.Write(textBox1.Text);
//调用BinaryWriter类的Write()方法将文本框中的数据写入
for (int i = 0; i < 300; i++)
{
writer.Write(10 + i);
}
MessageBox.Show("写入文件成功");
textBox1.Text = "";//关闭BinaryWriter流
fs.Close();//关闭FileStream流
}
} private void button2_Click(object sender, EventArgs e)
{
string fileName = "MyNew.data";//定义字符串变量存储文件名字符串
if (!(File.Exists(fileName)))//判断要读取的文件是否存在
{
MessageBox.Show("当前文件不存在");
return;
}
string strData = "";
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
//以读取已有文件的方式创建FileStream的实例对象
BinaryReader reader = new BinaryReader(fs);//实例化BinaryReader类
strData = reader.ReadString();//调用BinaryReader的ReadString方法
for (int i = 0; i < 300; i++)//循环读取文件内容
{
if (i == 0)
{
strData += reader.ReadInt32().ToString();
//每次读取4个字节带符号的整数值,并转换为字符串类型
}
else
{
strData += " || " + reader.ReadInt32().ToString();
}
}
textBox2.Text = strData;//读取的文件内容显示在textBox2中
fs.Close();//关闭文件流对象
reader.Close();//关闭二进制文件读对象存储文件名字符串
}
}
}测试成功。
因为你文件中没有足够的整数。
我只是贴我完整的代码啦。没用到的。writer.Write(textBox1.Text);
//调用BinaryWriter类的Write()方法将文本框中的数据写入
for (int i = 0; i < 300; i++)
{
writer.Write(10 + i);
}这两个语句不是将数据写入文件的两种方法吗,为什么注释掉一种就不能成功运行呢?