C# 将文件复制到目录后无法解压缩
他,伙计们 我的Xamarin表单应用程序有问题。在我的Android项目中有一个嵌入式资源(Sqlite Database.db3),它是压缩的,因为它的大小(解压缩100MB,压缩23MB)。在应用程序启动时,我花了一整天的时间将其从资源文件夹复制到设备内部文件夹,然后在同一文件夹中解压。只要在调试模式下编译,所有这些都可以完美工作。如果我试图在发布模式下编译,或者想在手机上使用.apk,应用程序就会崩溃。 我不知道它出了什么问题。我真的希望你能帮我解决这个问题。 也许您有另一种解决方案,比如直接从资源文件夹解压数据库C# 将文件复制到目录后无法解压缩,c#,xamarin,C#,Xamarin,他,伙计们 我的Xamarin表单应用程序有问题。在我的Android项目中有一个嵌入式资源(Sqlite Database.db3),它是压缩的,因为它的大小(解压缩100MB,压缩23MB)。在应用程序启动时,我花了一整天的时间将其从资源文件夹复制到设备内部文件夹,然后在同一文件夹中解压。只要在调试模式下编译,所有这些都可以完美工作。如果我试图在发布模式下编译,或者想在手机上使用.apk,应用程序就会崩溃。 我不知道它出了什么问题。我真的希望你能帮我解决这个问题。 也许您有另一种解决方案,比
var assembly = GetType().GetTypeInfo().Assembly;
var qbankDbResource = assembly.GetManifestResourceNames().FirstOrDefault(name => name.EndsWith(zipName));
using (var qbankDbStream = assembly.GetManifestResourceStream(qbankDbResource))
using (var fStream = new FileStream(zipPath, FileMode.Create, FileAccess.Write))
{
qbankDbStream.CopyTo(fStream);
}
if (File.Exists(zipPath))
{
using (ZipArchive archive = ZipFile.OpenRead(zipPath))
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
try
{
entry.ExtractToFile(Path.Combine(Path.GetDirectoryName(zipPath), entry.FullName));
}
catch (IOException)
{
continue;
}
}
}
if (File.Exists(dbPath))
{
File.Delete(zipPath);
}
}
catch(IOException){continue;}
您正在默默地丢弃任何错误,并想知道为什么它不起作用?别这样!你查过了吗?通常当应用程序崩溃时会显示错误。你说的应用程序崩溃是什么意思?尝试捕获异常并将其记录在某个位置。应用程序崩溃意味着:它停止,应用程序消失。第一个异常(IOException)抛出{System.IO.IOException:System.IO.File.SetLastWriteTime(System.String path,System.DateTime lastWriteTime)处的无效参数[0x00029]在/Users/builder/data/lanes/4009/f3074d2c/source/mono/mcs/class/corlib/System.IO/File.cs:487 at System.IO.Compression.ZipFileExtensions.ExtractToFile(System.IO.Compression.ZipArchiveEntry source,System.String destinationFileName,System.Boolean overwrite)[0x0006b]中,但它继续并在continue语句之后执行它应该执行的操作