2013-09-28 3 views
0

Я пытаюсь выполнить программирование для сжатия с .tar , а исходный код, который я выполняю, является примером, представленным на главной странице Microsoft. но есть ошибки. Я не знаю почему, все так же, как пример на главной странице Microsoft.C# compress with .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"или удалить один из символов обратной косой черты:

string directoryPath = "C:\\sfdsf"; 

Или:

string directoryPath = @"C:\sfdsf"; 

Ваш комментарий:

Я отлаживал. то, что произошло на "используя (FileStream compressedFileStream = File.Create (DateTime.Now +" .tar "))"

После преобразования DateTime к string, строка содержит косую черту и двоеточие. Слэши и двоеточия являются недопустимыми символами в путях файлов. Попробуйте это:

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

Да .. я уже сделал .. but..It не работает для меня ..: - (.... –

+0

Что вы имеете в виду под «Это не работает» Вы получаете сообщение об ошибке – ProgramFOX

+0

yes .. Это та же ошибка. –

Смежные вопросы