我正在尝试使用.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.");
}
}
}
}
}
}
}
答案 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))