You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 07:14:57