过去,很有意识积累了不少工具类。
今年,为进一步提高工作效率,积极学习了ApacheCommons Jodd Guava Hutool等众多开源项目的代码。
这几个月一直在抽空整理自己的 工具类库。
发现,自己的很多工具类,包括其他人的一些工具类,都没有必要再用了,因为其它开源框架,做得更好了。
更重要的是,人家写的,也比较符合自己的风格和习惯。
关注自己的业务场景,实用工具类时的 需求, 入参和出参,细节就交给这些靠谱工具类库了。
如果自己非要再写工具代码,那应该是 别人没有提供的,或者不太符合自己需要的,或者 比较符合自己特色 组织习惯 命名习惯的。
下面列几个过去的工具代码,今天将把他们全部删除。
今后,用别人封装好的。
自己的工具类库,应该 精简、与众不同。
重复造轮子没意思。
“专注业务,退出其它”这是今后的目标,暂时不细说了。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
/**
*
* 输入输出流工具类。
*
* @author LeiWen 2013-3-16 上午9:52:08
*/
public class IOStreamUtils {
/**
* 从输入流中读取文本内容。
*
* @param inputStream
* 输入流
* @param encoding
* 输入流中内容的编码
* @param close
* 读取内容之后,是否关闭输入流。close为true表示关闭,false表示不关闭。
* @return 输入流中的文本内容
*/
public static String readText(InputStream inputStream, String encoding,
boolean close) {
String text = null;
if (close) {
text = readTextAndClose(inputStream, encoding);
} else {
text = readText(inputStream, encoding);
}
return text;
}
/**
* 从输入流中读取文本内容,读取内容之后,不关闭输入流。
*
* @param inputStream
* 输入流
* @param encoding
* 输入流中内容的编码
* @return 输入流中的文本内容
*/
public static String readText(InputStream inputStream, String encoding) {
InputStreamReader inputStreamReader = null;
StringBuffer sb = new StringBuffer("");
try {
inputStreamReader = new InputStreamReader(inputStream, encoding);
BufferedReader reader = new BufferedReader(inputStreamReader);
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line);
sb.append("n");
}
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
/**
* 从输入流中读取文本内容,读取内容之后,关闭输入流。
*
* @param inputStream
* 输入流
* @param encoding
* 输入流中内容的编码
* @return 输入流中的文本内容
*/
public static String readTextAndClose(InputStream inputStream,
String encoding) {
String text = null;
text = readText(inputStream, encoding);
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return text;
}
/**
* 向输出流中写文本内容。
*
* @param outputStream
* 输出流
* @param content
* 文本内容
* @param close
* 读取内容之后,是否关闭输出流。close为true表示关闭,false表示不关闭。
*/
public static void writeText(OutputStream outputStream, String content,
boolean close) {
if (close) {
writeTextAndClose(outputStream, content);
} else {
writeText(outputStream, content);
}
}
/**
* 向输出流中写文本内容,不关闭输出流。
*
* @param outputStream
* 输出流
* @param content
* 文本内容
*/
public static void writeText(OutputStream outputStream, String content) {
OutputStreamWriter outputStreamWriter = null;
outputStreamWriter = new OutputStreamWriter(outputStream);
try {
outputStreamWriter.write(content);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 向输出流中写文本内容,写完之后关闭输出流。
*
* @param outputStream
* 输出流
* @param content
* 文本内容
* @param close
* 读取内容之后,是否关闭输出流。close为true表示关闭,false表示不关闭。
*/
public static void writeTextAndClose(OutputStream outputStream,
String content) {
writeText(outputStream, content);
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.Date;
import java.util.List;
import java.util.zip.Deflater;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import com.jiutianniao.common.kit.io.FileKit;
/**
* 文件读写工具类。
*
* @author LeiWen 2013-3-16 上午9:51:26
*/
public class FileUtils {
public static String readTextFromFile(String fileName) {
return readTextFromFile(fileName, "GBK");
}
public static String readTextFromFile(String fileName, String charset) {
String content = null;
InputStream inputStream = null;
try {
inputStream = new FileInputStream(fileName);
content = IOStreamUtils.readText(inputStream, charset, true);
} catch (IOException e) {
System.out.print("IOError" + e.getMessage() + "n");
}
return content;
}
/**
* @deprecated 将文本内容写入到文本文件中
*
* @param path
* 文件的路径
* @param content
* 文本内容
*/
public static void writeTextToFile22(String path, String content) {
OutputStream outputStream = null;
try {
outputStream = new FileOutputStream(path);
IOStreamUtils.writeText(outputStream, content, true);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 将文本内容写入到文本文件中
*
* @param path
* 文件的路径
* @param content
* 文本内容
*/
public static void writeTextToFile(String path, String content) {
File file = new File(path);
try {
FileWriter writer = new FileWriter(file);
writer.write(content);
// 如果没有调用flush(),也没有关闭输出流,不会将字符串写入文件中
writer.close();// 关闭流
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String path = "C://FileTest.java";
writeTextToFile(path, "fans");
try {
FileKit.writeString(path, "fans2");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static byte[] getBytesFromFile(File file) throws IOException {
InputStream is = new FileInputStream(file);
long length = file.length();
if (length > Integer.MAX_VALUE) {
// File is too large
}
byte[] bytes = new byte[(int) length];
int offset = 0;
int numRead = 0;
while (offset = 0) {
offset += numRead;
}
if (offset -s languagedir=D:\xpdf\xpdf-chinese-simplified -s flashversion=9 ""
// + sourcePath + """;
String command = "C:/Program Files/SWFTools/pdf2swf.exe" + " -o ""
+ filePath + "" -s flashversion=9 "" + sourcePath + """;
Process process = Runtime.getRuntime().exec(command); // 调用外部程序
final InputStream is1 = process.getInputStream();
new Thread(new Runnable() {
public void run() {
BufferedReader br = new BufferedReader(new InputStreamReader(
is1));
try {
while (br.readLine() != null)
;
} catch (IOException e) {
e.printStackTrace();
}
}
}).start(); // 启动单独的线程来清空process.getInputStream()的缓冲区
InputStream is2 = process.getErrorStream();
BufferedReader br2 = new BufferedReader(new InputStreamReader(is2));
StringBuilder buf = new StringBuilder(); // 保存输出结果流
String line = null;
while ((line = br2.readLine()) != null)
buf.append(line); // 循环等待ffmpeg进程结束
System.out.println("输出结果为:" + buf);
// BufferedReader bufferedReader = new BufferedReader(new
// InputStreamReader(pro.getInputStream()));
while (br2.readLine() != null) {
;
}
try {
process.waitFor();
} catch (InterruptedException e) {
throw e;
}
return process.exitValue();
}
/**
* 压缩文件
*
* @param files
* 需要压缩的文件,文件路径为绝对路径
* @param zipFilePath
* 目标压缩文件的绝对路径
*/
public static void zipFile(List files, String zipFilePath) {
// 声明压缩流对象
ZipOutputStream zipOut = null;
try {
zipOut = new ZipOutputStream(new FileOutputStream(new File(
zipFilePath)));
for (String file : files) {
File file2 = new File(file);
// 设置ZipEntry对象
zipOut.putNextEntry(new ZipEntry(file2.getName()));
// zipOut.setComment("www.fansunion.cn");
zipOut.write(FileUtils.getBytesFromFile(file2));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (zipOut != null) {
try {
zipOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}