我的手上有一个有趣的熟食店。我创建了一个程序,它采用1-∞压缩文件,其中还包含X个单独的文件。出于某种原因,不同文件夹中的文件有时会获得相同的文件名。这是我到目前为止的代码......
这段代码的作用是在实例化对象之后,另一个对象调用此函数,称为 unzip()。什么 failsafe.check_directory()只是确保临时文件夹将被解压缩的所有文件都是空的。第一次尝试catch是针对我还不知道的任何东西,但第二次尝试catch是为了捕获重复的重复文件,所以当它确实发生时......程序不会破坏。因此,我要问的问题是,处理此异常的最佳方法是什么,而不是仅仅将副本踢到一边,或者换句话说,是否要将文件重命名为迟到。
public bool unzip()
{
int bad_file = 0;
failsafe.check_directory();
string dupes = "dupe files\r\n";
try
{
for (int i = 0; i < zippedfolders.Length; i++)
{
try
{
bad_file = i;
ZipFile.ExtractToDirectory(zippedfolders[i], temppath);
}
catch
{
dupes += zippedfolders[bad_file]+"\r\n";
continue;
}
}
File.WriteAllText(@"C:\MDSSCRUBBER\BUGGED_FILE.txt", dupes);
files = Directory.GetFiles(temppath);
return true;
}
catch
{
return false;
}
}
答案 0 :(得分:0)
这是我处理它的方式......由于某些奇怪的原因,Directory类没有在桌面中创建文件夹。
private void fix_desktop()
{
string pathington = Environment.SpecialFolder.Desktop + @"\MrEncrypto\";
bool check = !Directory.Exists(pathington);
string finaloutput = Environment.SpecialFolder.Desktop + @"\MrEncrypto\";
if (!check)
{
Directory.CreateDirectory(pathington);
}
else
{
foreach (string file in Directory.GetFiles(Environment.SpecialFolder.Desktop + @"\MrEncrypto"))
{
File.Delete(file);
}
}
foreach (string file in files)
{
try
{
FileStream fsInput = new FileStream(file, FileMode.Open, FileAccess.Read);
FileStream fsencrypt = new FileStream(finaloutput + Path.GetFileName(file), FileMode.Create, FileAccess.Write);
/** DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
DES.Key = ASCIIEncoding.ASCII.GetBytes(key);
DES.IV = ASCIIEncoding.ASCII.GetBytes(IV);**/
AesCryptoServiceProvider DES = new AesCryptoServiceProvider();
DES.BlockSize = 128;
DES.KeySize = 256;
DES.IV = ASCIIEncoding.ASCII.GetBytes(IV);
DES.Key = ASCIIEncoding.ASCII.GetBytes(key);
DES.Padding = PaddingMode.PKCS7;
DES.Mode = CipherMode.CBC;
ICryptoTransform desencrypt = DES.CreateEncryptor();
CryptoStream ocstream = new CryptoStream(fsencrypt, desencrypt, CryptoStreamMode.Write);
//reading time
byte[] filetobyte = new byte[fsInput.Length - 1];
fsInput.Read(filetobyte, 0, filetobyte.Length);
ocstream.Write(filetobyte, 0, filetobyte.Length);
fsInput.Close();
ocstream.Close();
fsencrypt.Close();
}
catch
{
continue;
}
}//foreach
SystemSounds.Beep.Play();
Encrypto.Enabled = false;
}//function