Android Studio中如何用Java读写com.example.myapplication下files/users文本文件
Android Studio中Java读写项目内files文件夹下的users.txt文件
一、读取项目内assets目录下的files/users.txt文件
首先确认你的files文件夹放置在src/main/assets目录下(Android项目中,assets目录用于存放打包时包含的原始资源文件)。
你之前尝试的BufferedReader写法不适用于assets内的文件——因为assets文件打包在APK中,不存在设备文件系统的真实路径,必须通过AssetManager获取输入流读取。正确代码示例:
import android.content.Context; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class FileUtil { // 读取assets下files/users.txt的内容 public static String readUsersFile(Context context) { StringBuilder content = new StringBuilder(); try { // 获取assets文件的输入流 InputStream inputStream = context.getAssets().open("files/users.txt"); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line; while ((line = reader.readLine()) != null) { content.append(line).append("\n"); } // 关闭流 reader.close(); inputStream.close(); } catch (IOException e) { e.printStackTrace(); } return content.toString(); } }
调用方式:在Activity或Fragment中,使用FileUtil.readUsersFile(this)(Activity中直接传this;Fragment中传requireContext())。
二、写入操作:项目内assets文件无法直接写入
assets目录下的文件是只读资源,打包进APK后无法直接修改或写入。如果需要写入内容,需先将assets中的文件复制到应用的内部/外部存储目录,再对复制后的文件操作。
2.1 复制assets文件到内部存储
import android.content.Context; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class FileUtil { // 将assets下的files/users.txt复制到应用内部存储的files目录 public static void copyUsersFileToInternalStorage(Context context) { File internalFile = new File(context.getFilesDir(), "users.txt"); // 文件已存在则跳过复制 if (internalFile.exists()) { return; } try { InputStream inputStream = context.getAssets().open("files/users.txt"); OutputStream outputStream = new FileOutputStream(internalFile); byte[] buffer = new byte[1024]; int length; while ((length = inputStream.read(buffer)) > 0) { outputStream.write(buffer, 0, length); } outputStream.close(); inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } }
2.2 读写内部存储的users.txt文件
读取内部存储文件:
public static String readInternalUsersFile(Context context) { StringBuilder content = new StringBuilder(); File file = new File(context.getFilesDir(), "users.txt"); try { BufferedReader reader = new BufferedReader(new java.io.FileReader(file)); String line; while ((line = reader.readLine()) != null) { content.append(line).append("\n"); } reader.close(); } catch (IOException e) { e.printStackTrace(); } return content.toString(); }
写入内容到内部存储文件:
public static void writeToInternalUsersFile(Context context, String content) { File file = new File(context.getFilesDir(), "users.txt"); try { java.io.BufferedWriter writer = new java.io.BufferedWriter(new java.io.FileWriter(file)); writer.write(content); writer.close(); } catch (IOException e) { e.printStackTrace(); } }
内容的提问来源于stack exchange,提问作者Michael Mounir
相关产品推荐
相关产品推荐

