将zip文件解压缩到目录

时间:2016-12-29 12:45:34

标签: c# android xamarin.forms file-handling

我正在使用模拟器和Xamarin工作室提取zip文件到目录C#Bt我得到的错误数量我尝试了很多方法但无法解决这个问题。我怎么能解决这个问题。这是我的代码:

   string zipPath=("/storage/emulated/0/Download/file/file/file.epub");
    string extractPath = ("/storage/emulated/0/Download/file/file/temp");
    DateTime time = new DateTime(2016, 12, 30);
    if (File.Exists(extractPath))
        File.SetLastWriteTime(extractPath, time);
    ZipFile.ExtractToDirectory(zipPath, extractPath);

但我收到的错误如下:

[MonoDroid] System.IO.IOException: Invalid parameter
[MonoDroid]   at System.IO.File.SetLastWriteTime (System.String path, System.DateTime lastWriteTime) [0x00030] in <500f590720b848ecadaddac3c375ddb5>:0 
[MonoDroid]   at AD_Forms.AD..ctor () [0x00061] in <21d9786453cc4650b478317d331d91ab>:0 
[MonoDroid]   at AD_Forms.App..ctor () [0x00006] in <21d9786453cc4650b478317d331d91ab>:0 
[MonoDroid]   at AD_Forms.Droid.MainActivity.OnCreate (Android.OS.Bundle bundle) [0x00022] in <21d9786453cc4650b478317d331d91ab>:0 
[MonoDroid]   at Android.Support.V4.App.FragmentActivity.n_OnCreate_Landroid_os_Bundle_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_savedInstanceState) [0x00011] in <27c17fe440cf491ba8255bcefade6e02>:0 
[MonoDroid]   at (wrapper dynamic-method) System.Object:a118a7e9-2106-4f87-a55c-98f583aa9bd8 (intptr,intptr,intptr)
[art] JNI RegisterNativeMethods: attempt to register 0 native methods for android.runtime.JavaProxyThrowable
[AndroidRuntime] Shutting down VM
[AndroidRuntime] FATAL EXCEPTION: main
[AndroidRuntime] Process: com.companyname.ad_forms, PID: 1909
[AndroidRuntime] java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
[AndroidRuntime]    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
[AndroidRuntime] Caused by: java.lang.reflect.InvocationTargetException
[AndroidRuntime]    at java.lang.reflect.Method.invoke(Native Method)
[AndroidRuntime]    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
[AndroidRuntime]    ... 1 more
[AndroidRuntime] Caused by: android.runtime.JavaProxyThrowable: System.IO.IOException: Invalid parameter
[AndroidRuntime]   at System.IO.File.SetLastWriteTime (System.String path, System.DateTime lastWriteTime) [0x00030] in <500f590720b848ecadaddac3c375ddb5>:0 
[AndroidRuntime]   at AD_Forms.AD..ctor () [0x00061] in <21d9786453cc4650b478317d331d91ab>:0 
[AndroidRuntime]   at AD_Forms.App..ctor () [0x00006] in <21d9786453cc4650b478317d331d91ab>:0 
[AndroidRuntime]   at AD_Forms.Droid.MainActivity.OnCreate (Android.OS.Bundle bundle) [0x00022] in <21d9786453cc4650b478317d331d91ab>:0 
[AndroidRuntime]   at Android.Support.V4.App.FragmentActivity.n_OnCreate_Landroid_os_Bundle_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_savedInstanceState) [0x00011] in <27c17fe440cf491ba8255bcefade6e02>:0 
[AndroidRuntime]   at (wrapper dynamic-method) System.Object:a118a7e9-2106-4f87-a55c-98f583aa9bd8 (intptr,intptr,intptr)
[AndroidRuntime]    at md595826e4c93c1bb9112307fcbc37b1beb.MainActivity.n_onCreate(Native Method)
[AndroidRuntime]    at md595826e4c93c1bb9112307fcbc37b1beb.MainActivity.onCreate(MainActivity.java:29)
[AndroidRuntime]    at android.app.Activity.performCreate(Activity.java:6237)
[AndroidRuntime]    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
[AndroidRuntime]    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
[AndroidRuntime]    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
[AndroidRuntime]    at android.app.ActivityThread.-wrap11(ActivityThread.java)
[AndroidRuntime]    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
[AndroidRuntime]    at android.os.Handler.dispatchMessage(Handler.java:102)
[AndroidRuntime]    at android.os.Looper.loop(Looper.java:148)
[AndroidRuntime]    at android.app.ActivityThread.main(ActivityThread.java:5417)

1 个答案:

答案 0 :(得分:0)

您是否在清单文件中添加权限?

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

这个bugzilla报告提到它可能是由于Android的错误: https://bugzilla.xamarin.com/show_bug.cgi?id=3029

尝试在实际设备中运行代码而不是模拟器,以检查它是否也有同样的问题。