我目前正在尝试制作一个在android中下载文件的AsyncTask。它处于初步状态但是我的代码被淹没在try catch statementes中,我使用eclipse的建议自动填充。
以下是来自创建和写入文件的单个函数的代码:
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();
}
当我将此块传输到异步任务时,它转向:
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()会是一个很好的实现吗?
答案 0 :(得分:1)
使用一次尝试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;
}