相关疑难解决方法(0)

如何在Android中以编程方式解压缩文件?

我需要一个小代码片段,它从给定的.zip文件中解压缩一些文件,并根据它们在压缩文件中的格式提供单独的文件.请发布您的知识并帮助我.

java android unzip

124
推荐指数
8
解决办法
10万
查看次数

如何使用为Android 5.0(Lollipop)提供的新SD卡访问API?

背景

Android 4.4(KitKat)上,谷歌已经限制了对SD卡的访问.

从Android Lollipop(5.0)开始,开发人员可以使用新的API,要求用户确认允许访问特定文件夹,如此Google-Groups帖子所述.

问题

该帖子指导您访问两个网站:

这看起来像是一个内部示例(可能稍后会在API演示中显示),但很难理解发生了什么.

这是新API的官方文档,但它没有详细说明如何使用它.

这是它告诉你的:

如果您确实需要完全访问整个文档子树,请首先启动ACTION_OPEN_DOCUMENT_TREE以允许用户选择目录.然后将生成的getData()传递给fromTreeUri(Context,Uri)以开始使用用户选择的树.

在导航DocumentFile实例树时,您始终可以使用getUri()来获取表示该对象的基础文档的Uri,以便与openInputStream(Uri)等一起使用.

要在运行KITKAT或更早版本的设备上简化代码,可以使用fromFile(File)来模拟DocumentsProvider的行为.

问题

我对新API有几个问题:

  1. 你是如何真正使用它的?
  2. 根据帖子,操作系统会记住应用程序被授予访问文件/文件夹的权限.你如何检查你是否可以访问文件/文件夹?是否有一个函数可以返回我可以访问的文件/文件夹列表?
  3. 你如何在Kitkat上处理这个问题?它是支持库的一部分吗?
  4. 操作系统上是否有设置屏幕,显示哪些应用可以访问哪些文件/文件夹?
  5. 如果在同一设备上为多个用户安装了应用程序,会发生什么?
  6. 是否有关于这个新API的任何其他文档/教程?
  7. 权限可以被撤销吗?如果是这样,是否有意图被发送到应用程序?
  8. 是否会在所选文件夹上递归请求权限工作?
  9. 使用该权限是否也允许用户有机会根据用户的选择进行多次选择?或者应用程序是否需要专门告知意图允许哪些文件/文件夹?
  10. 模拟器上有没有办法尝试新的API?我的意思是,它有SD卡分区,但它作为主要外部存储器,所以已经给出了所有访问权限(使用简单的权限).
  11. 当用户用另一张SD卡替换SD卡时会发生什么?

android android-sdcard android-5.0-lollipop documentfile

113
推荐指数
2
解决办法
7万
查看次数

解压缩zip文件...找不到文件异常

我从网上获得了以下代码,它看起来一切正常,但我发现文件未找到异常...

我在sdcard中有一个名为NewForestPonies.epub的文件

许可:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
Run Code Online (Sandbox Code Playgroud)

码:

    String ZipFileLocation=Environment.getExternalStorageDirectory()+"/NewForestPonies.epub";
    String unZipFileLocation=Environment.getExternalStorageDirectory()+"/DEST/";
    Decompress decomp=new Decompress(ZipFileLocation, unZipFileLocation, "zip");
    decomp.run(); 



 public Decompress(String zipFile, String location,String t) { 
    super(t);
    _zipFile = zipFile; 
    _location = location; 
} 
public void run() {
    FileInputStream fin=null;
    ZipInputStream zin=null;
    File file =null; 
    ZipEntry ze ;
    FileOutputStream fout=null;
    try{ 
        System.out.println(_zipFile );
        System.out.println(_location);
        fin = new FileInputStream(_zipFile); 
        zin = new ZipInputStream(fin); 
        ze= null; 
        byte[] buffer = new byte[1024];
        int length;
        while ((ze = zin.getNextEntry()) != null) { 
            file = …
Run Code Online (Sandbox Code Playgroud)

java android file

10
推荐指数
1
解决办法
5790
查看次数

如何解压缩大型zip文件并在更短的时间内写入SDCARD

要解压缩zip文件,我已经使用了包java.util.zip*中的类,通过引用并且它正常工作但是解压缩40MB的文件需要59秒.当我在iPhone项目上尝试相同的zip文件时(我们正在为两个平台开发应用程序--Android和iPone以及解压缩zip文件并将解压缩的内容保存到SDCARD-Android或文档目录 - iPhone),只需14秒.iPhone应用程序使用ziparchive.

所以我的问题是:

1.从上面的实验中可以看出,与iPhone应用程序相比,Java中对SDCARD的解压缩和文件写入操作消耗的时间更长,因此我决定使用NDK进行C/C++级解压缩和文件写入操作.这是正确的选择吗?

2.我搜索了谷歌,stackoverflow和一些建议使用minizip但没有足够的帮助如何在Android中使用minizip.anyboday已经尝试过minizip for android吗?

3.我也尝试了用于libz的NDK开发来实现我的目标,因为Libz被添加到NDK但没有得到如何使用它.在NDK有人试过libz吗?

4.在Java或C/C++中是否有其他任何框架解压缩大型zip文件并在更短的时间内将它们写入SDCARD?

请帮我.

这是我的Java解压缩代码:

public String unzip() {

    String result;

    try {

        FileInputStream fin = new FileInputStream(this.filePath);
        ZipInputStream zin = new ZipInputStream(fin);
        ZipEntry ze = null;

        while ((ze = zin.getNextEntry()) != null) {

            Log.v("Unzip", "Unzipping " + ze.getName());

            if (ze.isDirectory()) {
                _dirChecker(ze.getName());
            } else {

                // Read 16 k at a time 
                byte[] buffer = new byte[16*1024];
                 int read;

                FileOutputStream fout = …
Run Code Online (Sandbox Code Playgroud)

iphone zip android unzip android-ndk

7
推荐指数
2
解决办法
8290
查看次数

Uzip文件夹递归-android

我试图解压缩压缩文件(此文件包含许多子文件夹和文件).

I am not able to create sub-folders while unzipping the file.
Run Code Online (Sandbox Code Playgroud)

每次我收到错误说:

No such file or directory.
Run Code Online (Sandbox Code Playgroud)

我搜索了很多关于这个的信息:

  1. Android - 解压缩文件夹?
  2. http://www.roseindia.net/tutorial/java/corejava/zip/ZipIsDirectory.html
  3. 在Android应用程序中解压缩sd卡上的压缩文件
  4. 如何在Java中递归解压缩文件?

但是,没有任何帮助我.

以下是我的尝试:

public class UnZipper {

    private static final String TAG = "UnZip";
    private String mFileName, mDestinationPath;

    public UnZipper(String fileName, String destinationPath) {
        mFileName = fileName;
        mDestinationPath = destinationPath;
    }

    public String getFileName() {
        return mFileName;
    }

    public String getDestinationPath() {
        return mDestinationPath;
    }

    // shrikant
    public void unzip() {
        String fullPath = mFileName;
        Log.d(TAG, …
Run Code Online (Sandbox Code Playgroud)

java zip android unzip

2
推荐指数
1
解决办法
1226
查看次数