【问题标题】:Extract zip file to directory解压zip文件到目录
【发布时间】:2017-05-13 19:08:09
【问题描述】:

我正在使用模拟器和 Xamarin Studio C# 将 zip 文件提取到目录中,但我遇到了很多错误我尝试了多种方法但无法解决这个问题。我该如何解决这个问题。这是我的代码:

   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)

【问题讨论】:

  • 你解决了吗?我也遇到了同样的问题!

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


【解决方案1】:

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

<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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多