永发信息网

c#中流的解释?

答案:3  悬赏:70  手机版
解决时间 2021-03-14 22:58
  • 提问者网友:你挡着我发光了
  • 2021-03-14 01:05
myjc.StartInfo.RedirectStandardError = true;
myjc.StartInfo.RedirectStandardInput = true;
myjc.StartInfo.RedirectStandardOutput = true;
就像这几句话有什么作用?
最佳答案
  • 五星知识达人网友:野慌
  • 2021-03-14 01:20
在C#中通常有两种流的操作方式:一种是文本流(StreamReader/streamWriter),文本流主要是用于记事本,写字板等相关的文本信息的读写处理(主要是以文本形式来传递的,将文件以字符流形式进行相关处理,所以对纯文本处理效率较高)
另外一种就是字节流(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
1. StartInfo.RedirectStandardError 获取或设置一个值,该值指示是否将应用程序的错误输出写入 2..StartInfo.RedirectStandardInput 获取或设置一个值,该值指示应用程序的输入是否从 Process.StandardInput 流中读取。Process 可以读取来自它的标准输入流(一般是键盘)的输入文本。通过重定向 StandardInput 流,可以通过编程方式指定进程的输入。例如,可以不使用键盘输入,而从指定文件的内容或另一个应用程序的输出提供文本。 3. StartInfo.RedirectStandardOutput 获取或设置一个值,该值指示是否将应用程序的输出写入 Process.StandardOutput 流中。如果 Process 将文本写入其标准流中,则通常会在控制台上显示该文本。通过重定向 StandardOutput 流,可以操作或取消进程的输出。例如,您可以筛选文本、用不同方式将其格式化,也可以将输出同时写入控制台和指定的日志文件中。
  • 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();     }     } }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯