import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map; import org.apache.log4j.Logger; public class FileUtil
{
static Logger logger; static {
FileUtil.logger = Logger.getLogger((Class)FileUtil.class);
}
public static <T> T readFile(final String filePath, T container, final String encode) {
try {
final File file = new File(filePath);
if (!file.exists()) {
FileUtil.logger.info((Object)("file " + filePath + " does not exists."));
return container;
}
final FileInputStream fis = new FileInputStream(file);
final InputStreamReader isr = new InputStreamReader(fis, (encode == null) ? "GBK" : encode);
final BufferedReader br = new BufferedReader(isr);
if (container instanceof List) {
final List list = (List)container;
String string = null;
while ((string = br.readLine()) != null) {
list.add(string);
}
}
else if (container instanceof String[]) {
String string2 = null;
final List<String> list2 = new ArrayList<String>();
while ((string2 = br.readLine()) != null) {
list2.add(string2);
}
final int count = list2.size();
final String[] strings = new String[count];
for (int i = 0; i < count; ++i) {
strings[i] = list2.get(i);
}
container = (T)(Object)strings;
}
else if (container instanceof Map) {
String string2 = null;
final Map map = (Map)container;
while ((string2 = br.readLine()) != null) {
final int a = string2.indexOf("=");
if (a != -1) {
map.put(string2.substring(0, a), string2.substring(a + 1));
}
}
}
else if (container instanceof byte[]) {
container = (T)getInputStreamBytes(fis);
}
br.close();
isr.close();
fis.close();
}
catch (Exception e1) {
FileUtil.logger.error((Object)"", (Throwable)e1);
}
return container;
} public static <T> T readFile(final InputStream is, T container, final String encode) {
try {
final InputStreamReader isr = new InputStreamReader(is, (encode == null) ? "GBK" : encode);
final BufferedReader br = new BufferedReader(isr);
if (container instanceof List) {
final List list = (List)container;
String string = null;
while ((string = br.readLine()) != null) {
list.add(string);
}
}
else if (container instanceof String[]) {
String string2 = null;
final List<String> list2 = new ArrayList<String>();
while ((string2 = br.readLine()) != null) {
list2.add(string2);
}
final int count = list2.size();
final String[] strings = new String[count];
for (int i = 0; i < count; ++i) {
strings[i] = list2.get(i);
}
container = (T)(Object)strings;
}
else if (container instanceof Map) {
String string2 = null;
final Map map = (Map)container;
while ((string2 = br.readLine()) != null) {
final int a = string2.indexOf("=");
if (a != -1) {
map.put(string2.substring(0, a), string2.substring(a + 1));
}
}
}
else if (container instanceof byte[]) {
container = (T)getInputStreamBytes(is);
}
br.close();
isr.close();
is.close();
}
catch (Exception e1) {
FileUtil.logger.error((Object)"", (Throwable)e1);
}
return container;
} public static void writeFile(final String directory, final String filename, final String encode, final Object... objs) {
try {
if (objs != null && objs.length > 0) {
final File file = new File(directory);
if (!file.exists()) {
file.mkdirs();
}
final FileOutputStream fos = new FileOutputStream(String.valueOf(directory) + "/" + filename);
final OutputStreamWriter osw = new OutputStreamWriter(fos, (encode == null) ? "GBK" : encode);
final BufferedWriter bw = new BufferedWriter(osw);
if (objs.length > 1) {
for (int len = objs.length, i = 0; i < len; ++i) {
final Object object = objs[i];
bw.write((object == null) ? "" : object.toString());
if (i != len - 1) {
bw.newLine();
}
}
}
else if (objs[0] instanceof List) {
final List list = (List)objs[0];
final Iterator iterator = list.iterator();
Object object = null;
while (true) {
if (iterator.hasNext()) {
object = iterator.next();
bw.write((object == null) ? "" : object.toString());
}
if (!iterator.hasNext()) {
break;
}
bw.newLine();
}
}
else if (objs[0] instanceof String[]) {
final String[] objects = (String[])objs[0];
for (int len2 = objects.length, j = 0; j < len2; ++j) {
final String object2 = objects[j];
bw.write((object2 == null) ? "" : object2);
if (j != len2 - 1) {
bw.newLine();
}
}
}
else if (objs[0] instanceof Map) {
final Map map = (Map)objs[0];
final int size = map.size();
int count = 0;
for (final Object key : map.keySet()) {
final Object value = map.get(key);
bw.write(String.valueOf((key == null) ? "" : key.toString()) + "=" + ((value == null) ? "" : value.toString()));
if (++count != size) {
bw.newLine();
}
}
}
else if (objs[0] instanceof byte[]) {
final byte[] bs = (byte[])objs[0];
fos.write(bs);
}
else {
bw.write(objs[0].toString());
}
bw.close();
osw.close();
fos.close();
}
}
catch (Exception e) {
FileUtil.logger.error((Object)"", (Throwable)e);
}
} public static <T> T readFileSafely(final String filePath, final T container) {
final String encode = getEncoding(filePath);
return readFile(filePath, container, encode);
} public static void repOldStr(final File file, final String oldStr, final String newStr) {
final String encode = getEncoding(file.getPath());
final List<String> list = readFile(file.getPath(), new ArrayList<String>(), encode);
final List<String> list2 = new ArrayList<String>();
for (String str : list) {
str = str.replace(oldStr, newStr);
list2.add(str);
}
writeFile(file.getParent(), file.getName(), encode, list2);
} private static byte[] getInputStreamBytes(final InputStream is) throws IOException {
final ByteArrayOutputStream outStream = new ByteArrayOutputStream();
final byte[] buffer = new byte[1024];
int len = 0;
while ((len = is.read(buffer)) != -1) {
outStream.write(buffer, 0, len);
}
final byte[] data = outStream.toByteArray();
return data;
} public static boolean appendFile(final String filepath, final String... content) {
if (content == null || content.length == 0) {
return true;
}
try {
final FileWriter fw = new FileWriter(filepath, true);
for (int i = 0; i < content.length; ++i) {
final String s = content[i];
fw.write(String.valueOf(s) + "\r\n");
}
fw.close();
return true;
}
catch (Exception e) {
FileUtil.logger.error((Object)"", (Throwable)e);
return false;
}
}
public static String getEncoding(final String filepath) {
return EncodingDetect.getJavaEncode(filepath);
}
public static void main(String[] args) {
String file = "C:\\Users\\lenovo\\Downloads\\a.log";
String encode=EncodingDetect.getJavaEncode(file);
System.out.println(encode);
}
}

FileUtil(from logparser)的更多相关文章

  1. android-HttpClient上传信息(包括图片)到服务端

    需要下载apache公司下的HttpComponents项目下的HTTPCLIENT ----------地址为http://hc.apache.org/downloads.cgi 主要是用到了htt ...

  2. 用开源项目CropImage实现图片的裁剪(不推荐)

       之前介绍过一个截图的办法(http://www.cnblogs.com/tianzhijiexian/p/3900241.html),这里再分享个开源项目.它也是截图,但是效果不是很好,首先还是 ...

  3. 规则引擎 - drools 使用讲解(简单版) - Java

    drools规则引擎 项目链接 现状: 运维同学(各种同学)通过后台管理界面直接配置相关规则,这里是通过输入框.下拉框等完成输入的,非常简单: 规则配置完毕后,前端请求后端,此时服务端根据参数(即规则 ...

  4. 结对作业:四则运算(Java+JavaFX)

    一.简介 此程序是一个可自动生成,计算小学四则运算题目的项目. Github地址:https://github.com/czmDeRepository/SoftwareWork/tree/master ...

  5. JAVA 进行图片中文字识别(准确度高)!!!

    OCR 识别文字项目 该项目 可以进行两种方式进行身份证识别 1. 使用百度接口 1.1 application-dev.yml配置 ocr: # 使用baiduOcr 需要有Ocr服务器 使用百度需 ...

  6. git-简单流程(学习笔记)

    这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...

  7. 读书笔记:JavaScript DOM 编程艺术(第二版)

    读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ...

  8. Recurrent Neural Network系列1--RNN(循环神经网络)概述

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...

  9. 谈谈一些有趣的CSS题目(十二)-- 你该知道的字体 font-family

    开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...

随机推荐

  1. git提示:Fatal:could not fetch refs from ....

    在git服务器上新建项目提示: Fatal:could not fetch refs from git..... 百度搜索毫无头绪,最后FQgoogle,找到这篇文章http://www.voidcn ...

  2. [速记]关于指针,引用和递归和解递归——C++

    在写基于二叉排序树的查找时,分为三个过程 1.二叉排序树的插入 2.二叉排序树的建立 3.基于二叉排序树的查找 其中第三部可以递归方式实现,也可以用while循环解递归,于是我想也解解第一步的递归,看 ...

  3. spring boot整合shiro出现UnavailableSecurityManagerException

    spring boot自带spring security,spring security自然不用说是一个强大的安全框架,但是用惯了shiro,一时半会用不来spring security,所以要在sp ...

  4. Javascript字节转换

    //文件大小转换 function bytesToSize(bytes) { if (bytes === 0) return '0 B'; var k = 1024; sizes = ['B', 'K ...

  5. Javascript获取div真实高度

    第一种情况就是宽高都写在样式表里,就比如#div1{width:120px;}.这中情况通过#div1.style.width拿不到宽度,而通过#div1.offsetWidth才可以获取到宽度. 第 ...

  6. Java防止SQL注入(转)

    一.SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库. 二.SQL注入攻击的总体 ...

  7. Theano Inplace

    Theano Inplace inplace Computation computation that destroy their inputs as a side-effect. Example i ...

  8. 做web开发和测试,修改hosts指定某个域名访问某个特定的IP后,如何使hosts立即生效的方法

    本文转自SUN'S BLOG,原文地址:http://whosmall.com/post/143 hosts的配置方法: 在windows系统中,找到C:\windows\system32\drive ...

  9. 【原】webp图片牛刀小试

    其实今年很早就有接触到webp图片的概念,只是一直没怎么弄.今天在一个小项目中小用了一番.总结总结 采用 what,why,how的方式来总结 what? 什么是webp图片? 维基百科:       ...

  10. thinkphp3.2.3版本文件目录及作用

    下载thinkphp3.2.3版本,解压缩后将文件夹名字改为thinkphp,然后放在www目录下,里面的文件夹和文件的名字和作用如下:(前面有Tab健的表示下一级,thinkphp是根目录) //t ...