我目前正在尝试制作一个在android 中下载文件的AsyncTask。它处于初步状态,但我的代码被淹没在我使用 eclipse 的建议自动完成的 try catch 语句中。
以下是创建并写入文件的单个函数的代码:
public void CreateFolder(View view) throws Exception{
File folder = new File(Environment.getExternalStorageDirectory().toString()+"/Dit+/Files");
folder.mkdirs();
folder.toString();
File file = new File(folder, "test.txt");
String url="http://cgi.di.uoa.gr/~std10108/a.txt";
FileWriter fw = new FileWriter(url);
fw.write(a);
fw.close();
}
当我将此 block 传输到异步任务时,它会变成这样:
private class AsyncTaskRunner extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params){
File folder = new File(Environment.getExternalStorageDirectory().toString()+"/Dit+/Files");
folder.mkdirs();
folder.toString();
String a=params[0];
File file = new File(folder, "test.txt");
FileWriter fw = null;
try {
fw = new FileWriter(file);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
fw.write(a);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
我知道目前使用异步任务是没有用的,但我想首先熟悉异步任务的概念,而不是按应有的方式使用它。实际上,url 字符串是我要下载的文件的来源,但我现在只想做一个例子。
所以我的问题是:有没有办法在没有这些 try-catch 语句的情况下编写异步任务,因为它会使代码不可读且丑陋。
在异步任务的 doInBackground() 函数中调用 CreateFolder() 函数会是一个很好的实现吗?
最佳答案
使用一次 try catch:
private class AsyncTaskRunner extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params){
File folder = new File(Environment.getExternalStorageDirectory().toString()+"/Dit+/Files");
folder.mkdirs();
folder.toString();
String a=params[0];
File file = new File(folder, "test.txt");
FileWriter fw = null;
try {
fw = new FileWriter(file);
fw.write(a);
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
关于java - Android异步任务代码结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20352338/