|
|
|
@ -8,6 +8,7 @@ import android.util.Log;
|
|
|
|
|
import org.w3c.dom.Text;
|
|
|
|
|
|
|
|
|
|
import java.io.BufferedReader;
|
|
|
|
|
import java.io.BufferedWriter;
|
|
|
|
|
import java.io.Closeable;
|
|
|
|
|
import java.io.File;
|
|
|
|
|
import java.io.FileInputStream;
|
|
|
|
@ -16,6 +17,7 @@ import java.io.IOException;
|
|
|
|
|
import java.io.InputStream;
|
|
|
|
|
import java.io.InputStreamReader;
|
|
|
|
|
import java.io.OutputStream;
|
|
|
|
|
import java.io.OutputStreamWriter;
|
|
|
|
|
import java.io.UnsupportedEncodingException;
|
|
|
|
|
import java.nio.channels.Channels;
|
|
|
|
|
import java.nio.channels.SeekableByteChannel;
|
|
|
|
@ -412,4 +414,59 @@ public class FilesUtils {
|
|
|
|
|
FilesUtils.closeFriendly(fos);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 复制Assets中的文本文件到指定路径,并将CRLF转换为LF格式
|
|
|
|
|
*
|
|
|
|
|
* @param context 上下文
|
|
|
|
|
* @param fileName Assets中的文件名
|
|
|
|
|
* @param destPath 目标路径
|
|
|
|
|
*/
|
|
|
|
|
public static void copyAndNormalizeTextAssetsFile(Context context, String fileName, String destPath) {
|
|
|
|
|
InputStream inputStream = null;
|
|
|
|
|
BufferedReader reader = null;
|
|
|
|
|
BufferedWriter writer = null;
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
inputStream = context.getAssets().open(fileName);
|
|
|
|
|
reader = new BufferedReader(new InputStreamReader(inputStream));
|
|
|
|
|
|
|
|
|
|
// 创建目标文件
|
|
|
|
|
File file = new File(destPath);
|
|
|
|
|
if (file.exists()) {
|
|
|
|
|
file.delete();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
File parentDir = file.getParentFile();
|
|
|
|
|
if (parentDir != null && !parentDir.exists()) {
|
|
|
|
|
parentDir.mkdirs();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (parentDir != null && !parentDir.canWrite()) {
|
|
|
|
|
Log.e("FilesUtils", "No write permission to directory: " + parentDir.getAbsolutePath());
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 使用BufferedWriter写入文件,同时处理行尾符
|
|
|
|
|
writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));
|
|
|
|
|
|
|
|
|
|
String line;
|
|
|
|
|
// 逐行读取并写入,由BufferedWriter自动处理行尾
|
|
|
|
|
while ((line = reader.readLine()) != null) {
|
|
|
|
|
writer.write(line);
|
|
|
|
|
writer.newLine(); // 使用平台默认的换行符(在Android上是LF)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
writer.flush();
|
|
|
|
|
Log.d("FilesUtils", "File normalized and copied successfully: " + destPath);
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
Log.e("FilesUtils", "Error normalizing file: " + e.getMessage(), e);
|
|
|
|
|
} finally {
|
|
|
|
|
closeFriendly(reader);
|
|
|
|
|
closeFriendly(writer);
|
|
|
|
|
closeFriendly(inputStream);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|