c#中流的解释?
- 提问者网友:你挡着我发光了
- 2021-03-14 01:05
myjc.StartInfo.RedirectStandardInput = true;
myjc.StartInfo.RedirectStandardOutput = true;
就像这几句话有什么作用?
- 五星知识达人网友:野慌
- 2021-03-14 01:20
另外一种就是字节流(FileStream),字节流处理速度很快(将文件转化为二进制字节流来进行相关处旦,但在处理纯文本内容时还是用前者效率更高--避免将二进制流接收后再处理成字符集的烦琐操作),可以处理任何文件形式(包括影视等各类文件)
下面给出了两种读写方式的对照,有兴趣可以研究下:
///
/// FileStream读文件
///
///
///
private void button2_Click(object sender, System.EventArgs e)
{
//从文件读取 FileStream读文件
//获取文件路径
string strPath=textBox1.Text.Trim();
try
{
//实例化
fileStream=new FileStream(strPath,FileMode.Open,FileAccess.Read);
//使用FileStream将文件读入到字节数组中
byte [] byteData=new byte[fileStream.Length];
fileStream.Read(byteData,0,Convert.ToInt32(fileStream.Length));
//将字节流 转为字符
//string strText=System.Text.Encoding.Default.GetString(byteData);
//textBox2.Text=strText;
//读取图片
pictureBox1.Image=Image.FromStream(fileStream);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
//关闭
if(fileStream!=null)
{
fileStream.Close();
}
}
}
private void button3_Click(object sender, System.EventArgs e)
{
//FileStream 写文件
//获取文件路径
string strPath=textBox1.Text.Trim();
//FileStream实例化
try
{
fileStream=new FileStream(strPath,FileMode.CreateNew,FileAccess.ReadWrite);
//获取待写入文件的字符串
string strText=textBox2.Text.Trim();
//字符转化为字节数组
byte [] byteData=new byte[strText.Length];
byteData=Encoding.Default.GetBytes(strText);
//写文件
fileStream.Write(byteData,0,byteData.Length);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{ //关闭流
if(fileStream!=null)
{
fileStream.Close();
}
}
}
private void button4_Click(object sender, System.EventArgs e)
{
//StreamReader 读字符
//获取文件路径
string strPath=textBox1.Text.Trim();
//实例化StreamReader对象
try
{
streamReader =new StreamReader(strPath,Encoding.Default);
string strText=streamReader.ReadToEnd();
textBox2.Text=strText;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if(streamReader!=null)
{
streamReader.Close();
}
}
}
///写操作
private void button5_Click(object sender, System.EventArgs e)
{
//获取文件路径
string strPath=textBox1.Text.Trim();
try
{
streamWriter=new StreamWriter(strPath,true,Encoding.Default);
string strText=textBox2.Text.Trim();
streamWriter.Write(strText);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if(streamWriter!=null)
{
streamWriter.Close();
}
}
}
- 1楼网友:逃夭
- 2021-03-14 02:52
- 2楼网友:何以畏孤独
- 2021-03-14 01:50
.net下的string永远是unicode的,所以只能判断txt文件的encoding。对于byte[],只有自己知道它的
encoding才能转换为string 转换为其他编码的byte[],一个例外是把整个txt文件通过stream读入byte[]后也可以根据它的前几个字节判断
encoding,对于片断,我们就无能为力了
namespace consoleapplication1 { class class1 { static void main(string[] args) { // // todo: 在此处添加代码以启动应用程序 // string filename = @"e:\a.txt"; //生成一个big endian unicode编码格式的文本文件 streamwriter sw = new streamwriter(filename, false, encoding.bigendianunicode);//你可以试试其他编码,比如encoding.getencoding("gb2312")或utf8 sw.write("这是一个string"); sw.close();
//读取 encoding fileencoding = txtfileencoding.getencoding(filename, encoding.getencoding("gb2312"));//取得这txt文件的编码 console.writeline("这个文本文件的编码为:" + fileencoding.encodingname); streamreader sr = new streamreader(filename, fileencoding);//用该编码创建streamreader
//用下面的方法虽然可以让系统自动判断文本文件的编码格式,但是我们无法取得该文本文件的编码 //sr.currentencoding永远为 unicode(utf-8) //streamreader sr = new streamreader(filename, true); //console.writeline("这个文本文件的编码为:" + sr.currentencoding.encodingname); console.writeline("这个文本文件的内容为:" + sr.readtoend()); sr.close(); console.readline(); } } }