我正在尝试使用GZIP压缩文件,我的应用程序监视文件夹中的新文件。当一个新文件进来时,它应该被压缩,然后应用程序应该在每次新文件进入文件夹时继续这样做。
private void Compress(string filePath)
{
using (FileStream inputStream = new FileStream(filePath,FileMode.OpenOrCreate,FileAccess.ReadWrite))
{
using (FileStream outputStream = new FileStream(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), @"C:\\Users\\maki\\Desktop\\Input"), FileMode.OpenOrCreate, FileAccess.ReadWrite))//'System.UnauthorizedAccessException'
{
using (GZipStream gzip = new GZipStream(outputStream, CompressionMode.Compress))
{
inputStream.CopyTo(gzip);
}
}
}
}
当我执行应用程序时,我得到了这个例外:
An unhandled exception of type 'System.UnauthorizedAccessException' occurred in mscorlib.dll
其他信息:
Access to the path 'C:\Users\maki\Desktop\Input' is denied.
我在互联网上搜索过很多但找不到合适的答案。
任何人都可以帮我解决问题吗?
答案 0 :(得分:0)
问题可能与您实例化文件流的方式有关。在您的代码中,您将路径与Path.Combine方法与另一个完全限定的路径组合在一起。
请参阅下面的代码。另一个问题可能与硬编码路径有关。该文件名为Input或Input.gz吗?还要注意使用语句堆叠以减少嵌套的能力。
private void Compress(string filePath)
{
using (FileStream inputStream =
new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
using (FileStream outputStream =
new FileStream(@"C:\\Users\\maki\\Desktop\\Input",
FileMode.OpenOrCreate, FileAccess.ReadWrite))
using (GZipStream gzip = new GZipStream(outputStream, CompressionMode.Compress))
{
inputStream.CopyTo(gzip);
}
}