2013-09-28 97 views
0

我正在尝试编程来压缩.tar 并且我编程的源代码是Microsoft主页提供的示例。 但出现错误。我不知道为什么,所有内容都与Microsoft主页上的示例相同。C#使用.tar压缩

误差

System.NotSupportedException:不支持给定的路径的格式。

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 

       //this directory is what I wanna compress.. 
      string directoryPath = @"C:\\sfdsf"; 
      DirectoryInfo directorySelected = new DirectoryInfo(directoryPath); 


      foreach (FileInfo filetoCompress in directorySelected.GetFiles()) 
      { 
       Compress(filetoCompress);    
      } 
     } 

     public static void Compress(FileInfo fileToCompress) 
     { 
      using (FileStream originalFileStream = fileToCompress.OpenRead()) 
      { 
       if ((File.GetAttributes(fileToCompress.FullName) & FileAttributes.Hidden) 
        != FileAttributes.Hidden & fileToCompress.Extension != ".tar") 
       { 
        using (FileStream compressedFileStream = File.Create(DateTime.Now+ ".tar")) 
        { 
         using (DeflateStream compressionStream = new DeflateStream(compressedFileStream, CompressionMode.Compress)) 
         { 
          originalFileStream.CopyTo(compressionStream); 

          MessageBox.Show("Compressed" + fileToCompress.Name + "from" + fileToCompress.Length.ToString() + " to" + compressedFileStream.Length.ToString () +" bytes."); 
         } 
        } 
       } 
      } 

     } 
    } 
} 

回答

2

之前"C:\\sfdsf"删除at符号去掉反斜杠之一:

string directoryPath = "C:\\sfdsf"; 

或者:

string directoryPath = @"C:\sfdsf"; 

从您的评论:

我做过调试。事情发生在 “使用(的FileStream compressedFileStream = File.Create(DateTime.Now +” 的.tar “))”

转换DateTimestring后,将字符串包含斜线和冒号。文件路径中的斜杠和冒号是无效的字符。 试试这个:

string filename = DateTime.Now.ToString.Replace("/", "").Replace(":", "") + ".tar"; 
using (FileStream compressedFileStream = File.Create(filename)) 
+0

是..我已经做了.. but..It我不工作..: - ?(.... –

+0

你说的“它不工作”的意思你明白错误消息? – ProgramFOX

+0

是的..这是一个同样的错误。 –