我开发了应用程序,我需要从url下载文件,我尝试了下面的代码,但是当我显示详细信息时,我得到0字节。
代码::
package com.playmusic;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
public class playmusic extends Activity {
private static String fileName = "shanesh.mp3";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try {
URL url = new URL("URl");
HttpURLConnection c = (HttpURLConnection) url.openConnection();
c.setRequestMethod("GET");
c.setDoOutput(true);
c.connect();
String PATH = Environment.getExternalStorageDirectory()
+ "/download/";
Log.v("log_tag", "PATH: " + PATH);
File file = new File(PATH);
file.mkdirs();
File outputFile = new File(file, fileName);
FileOutputStream fos = new FileOutputStream(outputFile);
InputStream is = c.getInputStream();
byte[] buffer = new byte[1024];
int len1 = 0;
while ((len1 = is.read(buffer)) != -1) {
fos.write(buffer, 0, len1);
}
fos.close();
is.close();
} catch (IOException e) {
Log.d("log_tag", "Error: " + e);
}
Log.v("log_tag", "Check: ");
} }
清单:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
答案 0 :(得分:1)
这是下载图像,音频,视频等任何文件的简单代码
Button start;
//String HttpMyUrl="http://am.cdnmob.org/_/img/loader-small.gif";
String HttpMyUrl="http://ringtones.mob.org/ringtone/RIusrm-7xATkRQlLw1o89w/1424909358/fa1b23bb5e35c8aed96b1a5aba43df3d/stefano_gambarelli_feat_pochill-land_on_mars_v2.mp3";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start= (Button) findViewById(R.id.startBtn);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(HttpMyUrl));
request.setTitle("File Download");
request.setDescription("File is being Downloaded...");
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
String fileName = URLUtil.guessFileName(HttpMyUrl,null, MimeTypeMap.getFileExtensionFromUrl(HttpMyUrl));
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS,fileName);
DownloadManager manager =(DownloadManager) getApplication().getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(request);
}
});
授予权限
答案 1 :(得分:0)
这是我用来下载文件的代码。试试这个
DefaultHttpClient http = new DefaultHttpClient();
HttpGet method = new HttpGet(YOUR URL);
HttpResponse res = http.execute(method);
InputStream responseStream = res.getEntity().getContent();
这里我使用GET方法并将参数附加到URL。
答案 2 :(得分:0)
执行以下操作。
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://www.mysite.com/file.txt");
try {
// Execute HTTP Get Request
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
printAsString(entity.getContent()));
} catch (IOException e) {
Log.e(TAG, "There was an IO Stream related error", e);
}
private void printAsString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder builder = new StringBuilder();
String line;
try {
while ((line = reader.readLine()) != null) {
Syso(line);
}
} catch (IOException e) {
Log.d(TAG, "Error while converting input stream to string");
}
is.close();
}
答案 3 :(得分:0)
试试这个:
int count;
try {
URL url = new URL("URl");
HttpURLConnection c = (HttpURLConnection) url.openConnection();
c.setRequestMethod("GET");
c.setDoOutput(true);
c.connect();
String PATH = Environment.getExternalStorageDirectory()
+ "/altered/";
Log.v("log_tag", "PATH: " + PATH);
File file = new File(PATH);
if (!file.exists()) {
file.mkdirs();
}
File outputFile = new File(file,name);
FileOutputStream fos = new FileOutputStream(outputFile);
// getting file length
int lenghtOfFile = c.getContentLength();
InputStream is = c.getInputStream();
byte buffer[] = new byte[1024];
long total = 0;
while ((count = is.read(buffer)) != -1) {
total += count;
// publishing the progress....
// After this onProgressUpdate will be called
publishProgress("" + (int) ((total * 100) / lenghtOfFile));
fos.write(buffer);
}
fos.close();
is.close();
} catch (IOException e) {
Log.e("log_tag", "Error: " + e);
}