您的当前位置:首页正文

openFileOutput的用法

2024-11-08 来源:个人技术集锦

openFileOutput方法写入的文件的位置位于:data/data/包名称/files下,app卸载后此文件即被删除!
坑爹的是在有的手机上通过此方法无法在data/data/包名称/files下生成文件,至今未解。希望哪位大神知道的指点下。

附上完整的类,可直接使用。

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.http.util.EncodingUtils;
import android.content.Context;public class FileUtil {
 
    /**     
    *     
    * @description: 获取/data/data/<packageName>/<dirName>/     
    * @param context     
    * @return String     
    */
    public static String getFileDir(Context context, String dirName) {
        String path ="/data/data/" + context.getPackageName() + "/" + dirName + "/";
        File file = new File(path);
        if (!file.exists()) {
            file.mkdirs();
        }
        return path;
    }
 
    /**     
    *     
    * @description: 写文件    
    * @param fileDir    
    * @param fileName    
    * @param fileContent        
    * @return void     
    */
    public static void write(String fileDir, String fileName, String fileContent) {     
        write(fileDir + fileName, fileContent);
    }
 
    /**     
    *      
    * @description: 写文件     
    * @param filePath    
    * @param fileContent         
    * @return void     
    */
    public static void write(String filePath, String fileContent){
        File f = new File(filePath);
        try {
            FileOutputStream fs = new FileOutputStream(f);
            byte[] b = fileContent.getBytes();
            fs.write(b);
            fs.flush();
            fs.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    /**     
    *     
    * @description: 读文件    
    * @param fileDir    
    * @param fileName   
    * @return        
    * @return String     
    */
    public static String read(String fileDir, String fileName) {        
        return read(fileDir + fileName);
    }
 
    /**     
    *      
    * @description: 读文件     
    * @param filePath     
    * @return   文件不存在,返回null     
    * @return String     
    */
    public static String read(String filePath) {
        File f = new File(filePath);
        if (!f.exists()) {
            return null;
        }
        FileInputStream fs;
        String result = null;
        try {
            fs = new FileInputStream(f);
            byte[] b = new byte[fs.available()];
            fs.read(b);
            fs.close();
            result = new String(b);
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        return result;
    }
 
    /**     
    *      
    * @description: 写入数据到内存,保存文件 (默认的files目录下)     
    * @param fileName     
    * @param writestr     
    * @param context     
    * @throws IOException     
    * @return void     
    */
    public static void writeFile(Context context,String fileName, String fileValue ) {
        try {
            FileOutputStream fos = context.openFileOutput(fileName,Context.MODE_PRIVATE);
            byte[] bytes = fileValue.getBytes();
            fos.write(bytes);
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    /**     
    *      
    * @description: 读取内存文件,输出String (默认的files目录下)     
    * @param fileName     
    * @param context     
    * @return     
    * @return String     
    */
    public static String readFile(Context context,String fileName) {
        String res = "";
        try {
            FileInputStream fin = context.openFileInput(fileName);
            int length = fin.available();
            byte[] buffer = new byte[length];
            fin.read(buffer);
            res = EncodingUtils.getString(buffer, "UTF-8");
            fin.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return res;
    }



转载于:https://my.oschina.net/wvliang/blog/360874

显示全文