从Dropbox下载所有类型的文件

时间:2012-06-08 05:20:33

标签: android download dropbox

我正在使用Dropbox。我看到了文档。这是我显示列表的代码:

Entry entryCheck = mApi.metadata("/", 100, null, true, null);
Log.i("Item Name", entryCheck.fileName());
Log.i("Is Folder", String.valueOf(entryCheck.isDir));

我从Dropbox获得了所有列表,但我的问题是

  1. 这里的entryCheck.isDir总是给我真正的价值,如果它是文件或目录,那么我怎么知道哪个是文件或哪个是目录?
  2. 我是如何下载这些文件的。
  3. 我试过这个,但它不起作用:

    private boolean downloadDropboxFile(String dbPath, File localFile,
            DropboxAPI<?> api) throws IOException {
        BufferedInputStream br = null;
        BufferedOutputStream bw = null;
        try {
            if (!localFile.exists()) {
                localFile.createNewFile(); // otherwise dropbox client will fail
                // silently
            }                   
    
            DropboxInputStream fin = mApi.getFileStream("dropbox", dbPath);
            br = new BufferedInputStream(fin);
            bw = new BufferedOutputStream(new FileOutputStream(localFile));
    
            byte[] buffer = new byte[4096];
            int read;
            while (true) {
                read = br.read(buffer);
                if (read <= 0) {
                    break;
                }
                bw.write(buffer, 0, read);
            }
        } catch (DropboxException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            // in finally block:
            if (bw != null) {
                bw.close();
            }
            if (br != null) {
                br.close();
            }
        }
    
        return true;
    }
    

1 个答案:

答案 0 :(得分:1)

这将有效

String inPath ="mnt/sdcard/"+filename;
File file=new File(inPath);           
try {

    mFos = new FileOutputStream(file);
} catch (FileNotFoundException e) {
    mErrorMsg = "Couldn't create a local file to store the image";
    return false;
}

mApi.getFile("/"+filename, null, mFos, null);

下载文件并将其存储在SD卡位置inPath中。 你必须在一个新的线程中,而不是在主线程中。使用AsyncTask。 http://www.androiddesignpatterns.com/2012/06/app-force-close-honeycomb-ics.html 这个链接解释了原因..