在Android开发中,Uri
是一个用于标识数据(如文件或网络资源)的通用结构。它可以用来访问存储在设备内部或外部存储、网络位置或其他应用程序中的文件。使用 Uri
可以方便地处理不同来源的数据。
Uri
允许不同应用程序之间共享数据,提高了数据的可访问性和复用性。Uri
进行访问,简化了数据处理的复杂性。Uri
可以指向各种类型的数据源,包括文件系统、网络位置等。以下是一个简单的示例,展示如何使用 Uri
从网络获取文件并保存到内部存储:
import android.content.Context;
import android.net.Uri;
import android.os.AsyncTask;
import android.util.Log;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class SaveFileTask extends AsyncTask<Uri, Void, Void> {
private Context context;
public SaveFileTask(Context context) {
this.context = context;
}
@Override
protected Void doInBackground(Uri... uris) {
Uri uri = uris[0];
String fileName = "downloaded_file";
File file = new File(context.getFilesDir(), fileName);
try {
URL url = new URL(uri.toString());
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.connect();
if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
throw new RuntimeException("HTTP error code : " + connection.getResponseCode());
}
InputStream inputStream = new BufferedInputStream(connection.getInputStream());
FileOutputStream outputStream = new FileOutputStream(file);
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
outputStream.flush();
outputStream.close();
inputStream.close();
} catch (Exception e) {
Log.e("SaveFileTask", "Error downloading file", e);
}
return null;
}
}
AndroidManifest.xml
中添加以下权限:AndroidManifest.xml
中添加以下权限:通过以上步骤和示例代码,你可以实现从网络获取文件并保存到内部存储的功能。
领取专属 10元无门槛券
手把手带您无忧上云