package safeluck.drive.evaluation.util;
|
|
import android.app.Application;
|
import android.content.Context;
|
import android.content.res.Resources;
|
import android.os.Environment;
|
import android.text.TextUtils;
|
import android.util.Log;
|
|
import com.anyun.exam.lib.MyLog;
|
import com.anyun.exam.lib.util.ByteUtil;
|
|
import java.io.BufferedReader;
|
import java.io.ByteArrayOutputStream;
|
import java.io.File;
|
import java.io.FileInputStream;
|
import java.io.FileOutputStream;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.io.InputStreamReader;
|
import java.io.OutputStream;
|
import java.util.List;
|
import java.util.Map;
|
|
import safeluck.drive.evaluation.bean.ExamMap;
|
|
public class FileUtil {
|
private static final String TAG = "FileUtil";
|
/**
|
* 读取assert目录下 txt文本文件内容
|
* @param context
|
* @param assetFileName
|
* @return
|
*/
|
public static StringBuffer readAssetTxtFile(Context context, String assetFileName) {
|
String lineTxt = null;
|
StringBuffer stringBuffer = new StringBuffer();
|
try {
|
InputStream inputStream = null;
|
try {
|
inputStream = context.getAssets()
|
.open(assetFileName);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
|
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
|
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
|
while((lineTxt = bufferedReader.readLine()) != null){
|
System.out.println(lineTxt);
|
stringBuffer.append(lineTxt);
|
|
}
|
inputStreamReader.close();
|
bufferedReader.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
return stringBuffer;
|
}
|
|
public static void createdirs(Context context){
|
String dir = Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+context.getPackageName();
|
|
File file = new File(dir);
|
if (!file.exists()){
|
file.mkdir();
|
}else{
|
Log.i(TAG, "createdirs: 目录已经存在");
|
}
|
|
}
|
|
public static StringBuffer readTxtFileFromSD(Context context,String fileName,boolean isRootDir){
|
String lineTxt = null;
|
StringBuffer stringBuffer = new StringBuffer();
|
try {
|
String dir = Environment.getExternalStorageDirectory().getAbsolutePath()+"/";
|
InputStream inputStream = null;
|
if (isRootDir){
|
|
}else{
|
|
dir = dir+context.getPackageName();
|
}
|
File file = new File(dir,fileName);
|
if (!file.exists()){
|
MyLog.d(TAG,dir+"目录下"+fileName+"文件不存在");
|
return null;
|
}
|
try {
|
inputStream = new FileInputStream(file);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
|
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
|
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
|
while((lineTxt = bufferedReader.readLine()) != null){
|
System.out.println(lineTxt);
|
stringBuffer.append(lineTxt);
|
|
}
|
inputStreamReader.close();
|
bufferedReader.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
return stringBuffer;
|
}
|
public static StringBuffer readMCUtFileFromSD(Context context,String fileName){
|
String lineTxt = null;
|
StringBuffer stringBuffer = new StringBuffer();
|
try {
|
String dir = Environment.getExternalStorageDirectory().getAbsolutePath()+"/";
|
InputStream inputStream = null;
|
|
File file = new File(dir,fileName);
|
if (!file.exists()){
|
MyLog.d(TAG,dir+"目录下"+fileName+"文件不存在");
|
return null;
|
}
|
try {
|
inputStream = new FileInputStream(file);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
|
InputStreamReader inputStreamReader = new InputStreamReader(inputStream,"GB2312");
|
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
|
while((lineTxt = bufferedReader.readLine()) != null){
|
// System.out.println( ByteUtil.byte2hex(lineTxt.getBytes("ISO-8859-1")));
|
|
stringBuffer.append(lineTxt);
|
|
}
|
inputStreamReader.close();
|
bufferedReader.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
return stringBuffer;
|
}
|
/**
|
*
|
* @param fromFile 源文件路径包括文件名(绝对路径)
|
* @param toFile
|
*/
|
public static void copyFile(String fromFile,String toFile){
|
|
try {
|
InputStream inputStream =new FileInputStream(fromFile);
|
OutputStream outputStream = new FileOutputStream(toFile);
|
byte[] bytes = new byte[1024];
|
while ((inputStream.read(bytes))>0){
|
outputStream.write(bytes);
|
}
|
inputStream.close();
|
outputStream.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
|
}
|
|
/**
|
* 拷贝assert目录下的文件到 安装包目录下
|
* @param context
|
* @param assertfileName
|
*/
|
public static void copyAssertFileToSD(Context context,String assertfileName){
|
|
try {
|
InputStream inputStream = null;
|
try {
|
inputStream = context.getAssets()
|
.open(assertfileName);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
deleteFile(context.getPackageName()+"/",assertfileName);
|
|
OutputStream outputStream = new FileOutputStream( new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+context.getPackageName(), assertfileName));
|
byte[] bytes = new byte[1024];
|
while ((inputStream.read(bytes))>0){
|
outputStream.write(bytes);
|
}
|
outputStream.close();
|
inputStream.close();
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 删除某个文件
|
* @param parentPathName 当前文件的父目录一直到根目录(不包括根目录)
|
* @param fileName 文件名
|
*/
|
public static void deleteFile(String parentPathName, String fileName){
|
String dir =Environment.getExternalStorageDirectory().getAbsolutePath()+"/";
|
dir = dir+parentPathName;
|
MyLog.i(TAG,"删除文件"+dir+fileName);
|
File file = new File(dir,fileName);
|
if (file.exists()){
|
file.delete();
|
}
|
}
|
public static byte[] readLocalFile(Context context,String fileName) throws IOException {
|
InputStream inputStream = null;
|
String dir = Environment.getExternalStorageDirectory().getAbsolutePath()+"/";
|
File file = new File(dir,fileName);
|
if (!file.exists()){
|
MyLog.d(TAG,dir+"目录下"+fileName+"文件不存在");
|
return null;
|
}
|
try {
|
inputStream = new FileInputStream(file);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
byte[] data = toByteArray(inputStream);
|
inputStream.close();
|
return data;
|
}
|
private static byte[] toByteArray(InputStream in) throws IOException {
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
byte[] buffer = new byte[1024 * 4];
|
int n = 0;
|
while ((n = in.read(buffer)) != -1) {
|
out.write(buffer, 0, n);
|
}
|
return out.toByteArray();
|
}
|
|
|
private static final String SEP2 = "|";
|
|
private static final String SEP3 = "=";
|
|
private static final String SEP1 = "#";
|
|
public static String ListToString(List<?> list) {
|
StringBuffer sb = new StringBuffer();
|
if (list != null && list.size() > 0) {
|
for (int i = 0; i < list.size(); i++) {
|
if (list.get(i) == null || list.get(i) == "") {
|
continue;
|
}
|
// 如果值是list类型则调用自己
|
if (list.get(i) instanceof List) {
|
sb.append(ListToString((List<?>) list.get(i)));
|
sb.append(SEP1);
|
} else if (list.get(i) instanceof Map) {
|
sb.append(MapToString((Map<?, ?>) list.get(i)));
|
sb.append(SEP1);
|
} else {
|
sb.append(list.get(i));
|
sb.append(SEP1);
|
}
|
}
|
}
|
return "L" + sb.toString();
|
}
|
/**
|
* Map转换String
|
*
|
* @param map
|
* :需要转换的Map
|
* @return String转换后的字符串
|
*/
|
public static String MapToString(Map<?, ?> map) {
|
StringBuffer sb = new StringBuffer();
|
// 遍历map
|
for (Object obj : map.keySet()) {
|
if (obj == null) {
|
continue;
|
}
|
Object key = obj;
|
Object value = map.get(key);
|
if (value instanceof List<?>) {
|
sb.append(key.toString() + SEP1 + ListToString((List<?>) value));
|
sb.append(SEP2);
|
} else if (value instanceof Map<?, ?>) {
|
sb.append(key.toString() + SEP1
|
+ MapToString((Map<?, ?>) value));
|
sb.append(SEP2);
|
} else {
|
sb.append(key.toString() + SEP3 + value.toString());
|
sb.append(SEP2);
|
}
|
}
|
return "M" + sb.toString();
|
}
|
|
}
|