目的: 隐藏文件里面的内容(不是隐藏文件)
方法: 原本存在一个图片文件
       把它的数据 通过流的方式 写入到文件流里面(文件流的名称自己定义)
       然后删除原文件里面的数据
       最后通过读取流的名称和流的内容 打开图片文件并显示 

解决方案 »

  1.   

    http://support.microsoft.com/kb/105763/en-us
      

  2.   

    DOS下是这样的情况
    假如 有2个文件  1.txt  内容 11111     2.txt 内容(空)
    type 1.txt>2.txt:1.txt   notepad 2.txt   显示空
    notepad 2.txt:1.txt   显示 11111  
      

  3.   

    如果仅仅是流操作的话 .net 有一个 stream 类,比如小而快的操作用 memorystream,大而长的用 filestream 等 IOSTREAM 类。类似的就是如是操作SySTEM.io.FileStream fs = System.Io.File.Open ( " fuck.rtf " );这样就把 fuck.rtf 的内容读到了 fs 流中,驻内存。需要的时候,比如说需要将流中的内容显示到Richtextbox控件rtf里面那就如是操作:rtf.Load ( fs );当然了,你写成命令行的程序也是可以的。如何写为命令行程序来操作,就是另一个问题了。
      

  4.   

    echo asdasd>1.txt               ----创建一个文本 内容为asdasd
    type 1.txt>>2.txt:2.txt --把文件1.txt写到另外一个空文件的文件流2.txt:2.txt中
    del  1.txt --删除原本的文件1.txt
    ren  2.txt 1.txt --把含有空文件内容的文件更名回去
    notepad 1.txt:2.txt --打开文本的流 显示asdasd然而 本机的文件名称是1.txt
    notepad 1.txt                   --看不到内容(内容进流里面了)
      

  5.   

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO.Compression;
    using System.IO;
    using System.Drawing;
    using System.Drawing.Imaging;
    using Trinet.Core.IO.Ntfs;
    namespace ConsoleApplication17
    {
        class Program
        {
            static void Main(string[] args)
            {
                // 创建流
                string path1 = @"C:\1\1.txt";
                FileStream fs = File.Open(path1, FileMode.OpenOrCreate, FileAccess.Read, FileShare.None);
                string path2 = @"C:\1\2.txt";
                FileInfo fileinfo = new FileInfo(path2);
                if(!File.Exists(path2))
                {
                    File.Create(path2);  
                              
                }
                
                
                AlternateDataStreamInfo adsi = fileinfo.GetAlternateDataStream("1.txt", System.IO.FileMode.OpenOrCreate );                       
                byte[] b = new byte[fs.Length];            
                fs.Read(b, 0, b.Length);
                fs.Close();         
                string str = UTF8Encoding.Default.GetString(b);            
                  
                StreamWriter sw = new StreamWriter(adsi.OpenWrite());            
                sw.WriteLine(str);            
                sw.Close();
              
                                     
                
                // 先删除文件1  然后把2改名为1      
                 FileInfo filedel = new FileInfo(path1);          
                 filedel.Delete();                       
                 File.Copy(path2, path1);
                //把流的内容还原到原本的文件中   FileStream fst = adsi.OpenRead();
                // 删除流的内容
                //foreach (AlternateDataStreamInfo s in fileinfo.ListAlternateDataStreams())
                //{               
                //    s.Delete();//删除流
                //}
            }                       }
    }
    红的这句出错了  文件占用  但是 FS.CLOSE  SW.CLOSR 拉
      

  6.   

    FileInfo fileinfo = new FileInfo(path2); 
    你的fileinfo还在占用着path2
      

  7.   

    上面问题解决了 新的问题  换成 JPG 就不行了 
      

  8.   

    提前写个GC.COLL 把它收了 
      

  9.   

    http://topic.csdn.net/u/20090613/18/3e868d8a-499f-4405-bb4a-aae55d1ba624.html?50052