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;
}