我正在尝试读取我从Dropbox下载的文件(使用Dropbox CORE API)。
private void downloadropboxfile(final String filename)
{
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
try {
File file = new File(getCacheDir(),filename);
if(!file.exists())
file.createNewFile();
FileOutputStream outputStream = new FileOutputStream(file);
DropboxAPI.DropboxFileInfo info=mDBApi.getFile("/" + filename, null, outputStream, null);
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
}
然后在另一个函数中,我调用downloaddropbox函数并尝试在Onclick事件上读取文件内容。
String filename = "info.txt";
downloadropboxfile(filename);
String strLine = "";
try {
InputStream instream = new FileInputStream(new File(getCacheDir(),filename));
InputStreamReader inputreader = new InputStreamReader(instream);
BufferedReader bReader = new BufferedReader(inputreader);
/** Reading the contents of the file , line by line */
while ((strLine = bReader.readLine()) != null) {
mTestOutput.setText(strLine);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
我的问题是我没有立即获取文件内容。我需要单击3-4次按钮才能读取文件内容。我的代码有什么问题?
答案 0 :(得分:0)
您正在调用downloaddropboxfile
,它会启动一个新线程来下载该文件。但是你会立即尝试读取本地文件(在下载之前)。
如果您以前没有使用过线程,重要的是要理解downloaddropboxfile
几乎立即返回,但它启动的线程会在后台运行。在尝试对下载的文件执行某些操作之前,您需要等待它完成。