0

圧縮するプログラミングをしようとしています。プログラミングを.tar 行うソース コードは、Microsoft のホームページで提供されている例です。しかし、エラーがあります。理由はわかりませんが、すべて 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.");
                        }
                    }
                }
            }

        }
    }
}
4

1 に答える 1

2

前のアットマークを削除する"C:\\sfdsf" 、バックスラッシュの 1 つを削除します。

string directoryPath = "C:\\sfdsf";

または:

string directoryPath = @"C:\sfdsf";

あなたのコメントから:

デバッグを行いました。「using (FileStream encryptedFileStream = File.Create(DateTime.Now+ ".tar"))」で何かが起こった

DateTimeaを aに変換するとstring、文字列にはスラッシュとコロンが含まれます。スラッシュとコロンは、ファイル パスでは無効な文字です。これを試して:

string filename = DateTime.Now.ToString.Replace("/", "").Replace(":", "") + ".tar";
using (FileStream compressedFileStream = File.Create(filename))
于 2013-09-28T16:48:12.963 に答える