# Android中怎么实现文件传输 在Android开发中,文件传输是常见的功能需求,涉及本地存储、网络传输等多种场景。本文将介绍几种主流的实现方式及其核心代码示例。 --- ## 一、本地文件传输(应用内/应用间) ### 1. 应用内部文件传输 通过`FileInputStream`和`FileOutputStream`实现: ```java // 读取文件 File srcFile = new File(getFilesDir(), "source.txt"); File destFile = new File(getFilesDir(), "target.txt"); try (InputStream in = new FileInputStream(srcFile); OutputStream out = new FileOutputStream(destFile)) { byte[] buffer = new byte[1024]; int length; while ((length = in.read(buffer)) > 0) { out.write(buffer, 0, length); } }
使用FileProvider
配置共享文件:
<!-- AndroidManifest.xml --> <provider android:name="androidx.core.content.FileProvider" android:authorities="com.example.fileprovider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /> </provider>
使用OkHttp
库示例:
OkHttpClient client = new OkHttpClient(); RequestBody body = new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart("file", "file.txt", RequestBody.create(MediaType.parse("text/plain"), file)) .build(); Request request = new Request.Builder() .url("https://example.com/upload") .post(body) .build(); client.newCall(request).enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { // 处理响应 } });
建立TCP连接传输文件:
// 发送端 Socket socket = new Socket("192.168.1.100", 8888); OutputStream os = socket.getOutputStream(); FileInputStream fis = new FileInputStream(file); byte[] buffer = new byte[1024]; while (fis.read(buffer) > 0) { os.write(buffer); } fis.close(); os.close();
通过BluetoothAdapter
实现:
BluetoothSocket socket = device.createRfcommSocketToServiceRecord( UUID.fromString("00001101-0000-1000-8000-00805F9B34FB")); socket.connect(); OutputStream outStream = socket.getOutputStream(); outStream.write(fileData);
使用WifiP2pManager
建立点对点连接后,通过Socket传输数据。
INTERNET
权限通过上述方法,开发者可根据场景选择适合的文件传输方案。实际开发中还需考虑性能优化和异常处理。 “`
(注:实际字数约580字,可根据需要删减示例代码调整篇幅)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。