Я пишу приложение для загрузки файла по URL-адресу одним нажатием кнопки. Проблема в том, что после успешной загрузки (по-видимому) я не могу найти файл на своей SD-карте. Я даже попытался вывести массив String Context.fileList()
, но он ничего не содержит (в результате появляется журнал ошибок «Нет файлов»).Не удается найти загруженный файл на устройстве
Как я могу сказать, что загрузка была выполнена вообще? Хорошо, я вижу, что соединение с данными активируется сразу после нажатия кнопки, и оно расслабляется только через 3-4 секунды, в течение которого я предполагаю, что он загружал файл размером менее 100 КБ.
Вот код основной деятельности:
package com.filedownloaddemo;
import java.io.File;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.os.StrictMode;
import android.util.Log;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
Button btn;
// URL to download from
String url = "http://www.edco.ie/_fileupload/The%20Interlopers%20-%20A%20short%20story%20by%20Saki.pdf";
// file variable
File outputFile;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.button1);
// set Android policy
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
}
// onClick handler for the button
public void download(View v) {
try {
outputFile = new File(Environment.getExternalStorageDirectory() + File.separator + "myfile.pdf");
DownloadHelper.downloadFile(url, outputFile);
} catch (Exception e) {
Log.d("DL_Error", e.getMessage());
}
if (this.fileList().length == 0) {
Log.d("DL_Error", "No files created.");
} else {
// write file names to Log
for (String s : this.fileList()) {
Log.d("Download", s);
}
}
}
}
А вот файл, который загружает (это взято из одного из ответов на это сообщество):
package com.filedownloaddemo;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import android.util.Log;
public class DownloadHelper {
public static void downloadFile(String url, File outputFile) {
try {
URL u = new URL(url);
URLConnection conn = u.openConnection();
int contentLength = conn.getContentLength();
DataInputStream stream = new DataInputStream(u.openStream());
byte[] buffer = new byte[contentLength];
stream.readFully(buffer);
stream.close();
DataOutputStream fos = new DataOutputStream(new FileOutputStream(
outputFile));
fos.write(buffer);
fos.flush();
fos.close();
} catch (Exception e) {
Log.d("DL_Error", e.getMessage());
}
}
}
Пожалуйста, помогите!
Где ваше имя файла ??? Вы должны использовать Environment.getExternalStorageDirectory() + "/ filename.pdf"; –
Исключения для «глотания» - это плохо, 'Log' them (не использовать' printStackTrace() 'на Android) –
Как вы проверяете наличие этого файла? –