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());

相关