guava工具之io流
1、pom
com.google.guava
guava
18.0
2、涉及到的工具类主要有:ByteStreams,CharStreams,Resources,Closeables,Flushables,Files,MoreFiles.
ByteStreams
// 将inputStream输出到OutputStream
copy(InputStream from, OutputStream to);
// 将inputStream转成byte[]数组
byte[] toByteArray(InputStream in)
CharStreams
// Readable里面的数据按行读出来放到List里面去。读文件的时候经常用到
List readLines(Readable r)
// CharStreams.readLines(),并且交给LineProcessor处理
@Test
public void readLines2() {
URL url = Resources.getResource("application.yml");
File f = new File(url.getFile()); // 声明File对象
try {
BufferedReader in = new BufferedReader(new FileReader(f));
List lineList = CharStreams.readLines(in, new LineProcessor>() {
List resultList = Lists.newArrayList();
@Override
public boolean processLine(String line) throws IOException {
resultList.add(line);
return true;
}
@Override
public List getResult() {
return resultList;
}
});
// 打印结果
for (String lineItem : lineList) {
System.out.println(lineItem);
}
} catch (IOException e) {
e.printStackTrace();
}
}
Resources
// URL对应的数据读到byte数组里面去
public static byte[] toByteArray(URL url)
// 我们把application.yml文件的内容读取出来
URL url = Resources.getResource("application.yml");
// URL对应数据读到String里面去
public static String toString(URL url, Charset charset)
// URL数据一行一行读出来放到List里面去
public static List readLines(URL url, Charset charset)
// URL里面数据拷贝到OutputStream里面去
public static void copy(URL from, OutputStream to)
Closeables
// InputStream关闭
public static void closeQuietly(@Nullable InputStream inputStream);
Files
// 把文件信息读到BufferedReader里面去
public static BufferedReader newReader(File file, Charset charset)
// 把文件里面的内容读到byte数组里面去
public static byte[] toByteArray(File file)
// byte数组里面的内容写到文件里面去
public static void write(byte[] from, File to)
// 把文件里面的内容拷贝到OutputStream里面去(个人认为和读出来的意思是一样的)
public static void copy(File from, OutputStream to)
// 把一个人家的内容拷贝到另一个文件里面去
public static void copy(File from, File to)
// 判断两个文件的内容是否相同
public static boolean equal(File file1, File file2)
// 创建一个临时文件(由java.io.tmpdir指定的操作系统缓存的临时目录下)
public static File createTempDir()
// 一行,一行的把文件读取出来
public static List readLines(File file, Charset charset)
//一行,一行的把文件读取出来,然后交给LineProcessor去处理
static T readLines(File file, Charset charset, LineProcessor callback)
//读取文件并且把读出来的内容交给ByteProcessor去处理
static T readBytes(File file, ByteProcessor processor)
// 返回给定路径所表示文件的扩展名
public static String getFileExtension(String fullName)
// 返回去除了扩展名的文件名
public static String getNameWithoutExtension(String file)
将文本文件读取,经过处理保存到另一个文件中
final File file = new File("D:\\code\\newProject\\src\\main\\java\\com\\subject\\config\\DemoFilter.java");
final StringBuilder stringBuilder = Files.readLines(file, Charset.defaultCharset(), new LineProcessor() {
StringBuilder builder = new StringBuilder();
@Override
public boolean processLine(String line) throws IOException {
final String s = line.replaceAll("\\*", "");
builder.append(s).append("\n");
return true;
}
@Override
public StringBuilder getResult() {
return builder;
}
});
final File file1 = new File("D:\\aaa\\tt.txt");
Files.write(stringBuilder,file1,Charset.defaultCharset());