string FileName = @"E:\exercise\11.txt"; 
if (File.Exists(FileName)) 

FileStream fsMyfile = new FileStream(FileName, FileMode.Open ,FileAccess.Read); 
BinaryReader br = new BinaryReader(fsMyfile); 
br.BaseStream.Seek(0,SeekOrigin.Begin); 
string aa=null; 
while (br.PeekChar() != -1) 

aa += "%" + br.ReadByte().ToString(); 

br.Close(); 
System.Console.WriteLine("编码{0}",aa); 
以上是以二进制流读出文件,然后以字节的形式读取二进制流,并转换成了字符串,问题是: 
怎么执行相反的操作啊????相反操作的二进制流写入文件后,得到原来的文件。 

解决方案 »

  1.   

     文件操作概览 
    趁有空,对.net的文件操作类做了一个大概的总结.首先引用IO namespace:
    using System.IO;创建目录:
            /// <summary>
            /// Directory.CreateDirectory参数解释:
            /// path
            /// 要创建的目录。
            /// directorySecurity
            /// 要应用于此目录的访问控制。
            /// 
            /// 如果文件夹存在则不创建,可用Directory.Exists判断文件夹是否存在.
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button1_Click(object sender, EventArgs e)
            {
                try
                {
                    DirectoryInfo di = Directory.CreateDirectory(@"C:\FileOperator");
                    string message = string.Format("Create \"{0}\" success!", di.FullName);
                    MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch
                {
                    MessageBox.Show("Create folder Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }创建文件:
            /// <summary>
            /// File.Create参数解释:
            /// path
            /// 类型:System..::.String
            /// 文件名。
            /// bufferSize
            /// 类型:System..::.Int32
            /// 用于读取和写入文件的已放入缓冲区的字节数。
            /// options
            /// 类型:System.IO..::.FileOptions
            /// FileOptions 值之一,它描述如何创建或覆盖该文件。
            /// fileSecurity
            /// 类型:System.Security.AccessControl..::.FileSecurity
            /// FileSecurity 值之一,它确定文件的访问控制和审核安全性。        /// 创建文件会覆盖原来同名文件,所以创建前最好File.Exists判断文件是否存在.
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button2_Click(object sender, EventArgs e)
            {
                try
                {
                    FileStream fs = File.Create(@"C:\FileOperator\File1.txt");                string message = string.Format("Create \"{0}\" success!", fs.Name);
                    MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    fs.Dispose();
                    fs.Close();
                }
                catch
                {
                    MessageBox.Show("Create file Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }打开和写入文件:
            /// <summary>
            /// File.Open参数解释:
            /// path
            /// 类型:System..::.String
            /// 要打开的文件。
            /// mode
            /// 类型:System.IO..::.FileMode
            /// FileMode 值,用于指定在文件不存在时是否创建该文件,并确定是保留还是覆盖现有文件的内容。
            /// access
            /// 类型:System.IO..::.FileAccess
            /// FileAccess 值,指定可以对文件执行的操作。
            /// share
            /// 类型:System.IO..::.FileShare
            /// FileShare 值,它指定其他线程所具有的对该文件的访问类型。
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button3_Click(object sender, EventArgs e)
            {
                try
                {
                    FileStream fs = File.Open(@"C:\FileOperator\File1.txt", FileMode.Append);
                    byte[] byteArray = new byte[] { (byte)'K', (byte)'E', (byte)'N' };
                    fs.Write(byteArray, 0, byteArray.Length);                string message = string.Format("Write \"KEN\" to File success!", fs.Name);
                    MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    fs.Dispose();
                    fs.Close();
                }
                catch
                {
                    MessageBox.Show("Open & Write file Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }文件复制:
            /// <summary>
            /// File.Copy参数解释:
            /// sourceFileName: 源文件
            /// destFileName: 目标文件
            /// overwrite: 如果目标已存在,是否覆盖目标文件
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button4_Click(object sender, EventArgs e)
            {
                try
                {
                    DirectoryInfo di = Directory.CreateDirectory(@"C:\FileOperator\Temp");
                    File.Copy(@"C:\FileOperator\File1.txt", @"C:\FileOperator\Temp\File1.txt", true);
                    string message = string.Format("Copy File to \"{0}\" success!", @"C:\FileOperator\Temp\File1.txt");
                    MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch
                {
                    MessageBox.Show("Copy file Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }文件删除:
            /// <summary>
            /// File.Delete参数解释:
            /// path: 文件完整路径;
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button5_Click(object sender, EventArgs e)
            {
                try
                {
                    File.Delete(@"C:\FileOperator\Temp\File1.txt");
                    string message = "Delete File success!";
                    MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch
                {
                    MessageBox.Show("Delete file Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }移动和重命名:
            /// <summary>
            /// File.Move参数解释:
            /// sourceFileName: 源文件
            /// destFileName: 目标文件
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button6_Click(object sender, EventArgs e)
            {
                try
                {
                    //move
                    File.Move(@"C:\FileOperator\File1.txt", @"C:\FileOperator\Temp\File1.txt");
                    //rename
                    File.Move(@"C:\FileOperator\Temp\File1.txt", @"C:\FileOperator\Temp\File2.txt");                string message = "Move & Rename file success!";
                    MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch
                {
                    MessageBox.Show("Move & Rename file Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }            //文件夹的Move和Rename同文件一样,也使用File.Move,传入文件路径即可.
            }
      

  2.   

    设置文件属性:
            /// <summary>
            /// File.SetAttributes参数解释:
            /// path: 文件完整路径;
            /// fileAttributes: FileAttributes值,指定文件属性.
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button7_Click(object sender, EventArgs e)
            {
                try
                {
                    File.SetAttributes(@"C:\FileOperator\Temp\File2.txt", FileAttributes.ReadOnly | FileAttributes.Hidden);                string message = "Set file Readonly & Hidden success!";
                    MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch
                {
                    MessageBox.Show("Set file attributes Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }检查文件和目录是否存在:
            /// <summary>
            /// 参数解释:
            /// path:文件路径
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button8_Click(object sender, EventArgs e)
            {
                try
                {
                    if (Directory.Exists(@"C:\FileOperator\Temp"))
                        MessageBox.Show(string.Format("\"{0}\"Exits!", @"C:\FileOperator\Temp\"), "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    if (File.Exists(@"C:\FileOperator\Temp\File2.txt"))
                        MessageBox.Show(string.Format("\"{0}\"Exits!", @"C:\FileOperator\Temp\File2.txt"), "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch
                {
                    MessageBox.Show("Check Folder & File Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }设置目录属性:
            /// <summary>
            /// 不用解释
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button9_Click(object sender, EventArgs e)
            {
                try
                {
                    DirectoryInfo di = new DirectoryInfo(@"C:\FileOperator\Temp");
                    di.Attributes = FileAttributes.ReadOnly | FileAttributes.Hidden;                string message = "Set folder attributes success!";
                    MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch
                {
                    MessageBox.Show("Set folder attributes Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }获取子目录:
             /// <summary>
            /// 懒得解释
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button10_Click(object sender, EventArgs e)
            {
                try
                {
                    string[] children = Directory.GetDirectories(@"C:\FileOperator");
                    string message = string.Empty;
                    if (children.Length > 0)
                        message = string.Format("{0} folders in \"{1}\"", children.Length, @"C:\FileOperator");
                    else
                        message = string.Format("No folder in \"{0}\"", @"C:\FileOperator");                MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch
                {
                    MessageBox.Show("Get child folder Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }获取目录下所有文件:
            /// <summary>
            /// 呵呵
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button11_Click(object sender, EventArgs e)
            {
                try
                {
                    string[] files = Directory.GetFiles(@"C:\FileOperator");
                    string message = string.Empty;
                    if (files.Length > 0)
                        message = string.Format("{0} files in \"{1}\"", files.Length, @"C:\FileOperator");
                    else
                        message = string.Format("No file in \"{0}\"", @"C:\FileOperator");                MessageBox.Show(message, "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch
                {
                    MessageBox.Show("Get files Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }删除目录:
            /// <summary>
            /// 参数解释:
            /// path:
            /// recursive:是否递归删除目录下所有目录及文件.
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button12_Click(object sender, EventArgs e)
            {
                try
                {
                    //正常文件才可以删除
                    DirectoryInfo di = new DirectoryInfo(@"C:\FileOperator\Temp");
                    di.Attributes = FileAttributes.Normal;
                    File.SetAttributes(@"C:\FileOperator\Temp\File2.txt", FileAttributes.Normal);
                    //delete
                    Directory.Delete(@"C:\FileOperator", true);
                    MessageBox.Show("Delete folder success!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch
                {
                    MessageBox.Show("Delete folder Error!", "系统消息", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
     另外,.Net对txt文件提供了更友好的操作封装,具体请查看MSDN,path参数可以用绝对路径,也可以使用相对路径,个人推荐使用绝对路径.
      

  3.   

    最简单的用File的静态方法:            System.IO.File.AppendAllText("路径", "内容");