2

我正在研究 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. 我是如何下载这些文件的。

我试过这个,但它不工作:

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;
}
4

1 回答 1

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);

这将下载文件并将其存储在 sdcard 位置inPath。您必须在新线程中执行此操作,而不是在主线程中。使用 AsyncTask。 http://www.androiddesignpatterns.com/2012/06/app-force-close-honeycomb-ics.html 这个链接解释了为什么..

于 2012-06-27T15:23:44.747 回答