用.tar压缩C#

时间:2013-09-28 16:19:35

标签: c# compression extract tar notsupportedexception

我正在尝试使用.tar进行压缩编程 我编程的源代码是Microsoft主页提供的示例。 但是有一个错误。我不知道为什么,一切都与微软主页上的例子相同。

错误是

  

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.");
                        }
                    }
                }
            }

        }
    }
}

1 个答案:

答案 0 :(得分:2)

删除"C:\\sfdsf" 之前的at符号或删除其中一个反斜杠:

string directoryPath = "C:\\sfdsf";

或者:

string directoryPath = @"C:\sfdsf";

来自你的评论:

  

我做了调试。在“使用(FileStream compressedFileStream = File.Create(DateTime.Now +”。。)“)”

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

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