美文网首页我爱编程
org.apache.commons.io.FileUtils使

org.apache.commons.io.FileUtils使

作者: Java及SpringBoot | 来源:发表于2018-05-21 18:09 被阅读71次

    org.apache.commons.io.FileUtils快速读写文件

    String fileName = "C://11.txt";
    File file = new File(fileName);
    String fileContent = "";
    try {
        fileContent = org.apache.commons.io.FileUtils.readFileToString(file, "GBK");
    } catch (IOException e) {
        e.printStackTrace();
    }
    fileContent += "Helloworld";
    try {
        org.apache.commons.io.FileUtils.writeStringToFile(file, fileContent, "GBK");
    } catch (IOException e) {
        e.printStackTrace();
    }
    

    其他参考

    Commons IO方便读写文件的工具类:

    Commons IO是apache的一个开源的工具包,封装了IO操作的相关类,使用Commons IO可以很方便的读写文件,url源代码等.

    普通地读取一个网页的源代码的代码可能如下

    InputStream in = new URL("http://laoyu.info").openStream();
    try {
        InputStreamReader inR = new InputStreamReader(in);
        BufferedReader buf = new BufferedReader(inR);
        String line;
        while ((line = buf.readLine()) != null) {
            System.out.println(line);
        }
    } finally {
        in.close();
    }
    

    使用了Commons IO,则可以大大简化代码.如下:

    InputStream in = new URL("http://laoyu.info").openStream();
    try {
        System.out.println(IOUtils.toString(in));
    } finally {
        IOUtils.closeQuietly(in);
    }
    

    Commons IO里的常用类

    FileUtils包含了文件操作的相关方法.

    下面的代码用于读取磁盘上的某个文件:

    1. File file = new File("c:/test.txt");
    2. List lines = FileUtils.readLines(file, "UTF-8");

    FileSystemUtils 可以获得指定磁盘路径的可用空间

    1. long freeSpace = FileSystemUtils.freeSpace("d:/");

    文件复制代码:

    1. File src = new File("src.txt");
    2. File dest = new File("dest.txt");
    3. FileUtils.copyFile(src, dest);

    补充:

    方便地下载文 件到本地

    InputStream in = new URL("http://www.baidu.com/img/baidu_logo.gif").openStream();
    byte[] gif = IOUtils.toByteArray(in);
    //IOUtils.write(gif,new FileOutputStream(new File("c:/test.gif")));
    FileUtils.writeByteArrayToFile(new File("c:/test.gif"), gif);
    IOUtils.closeQuietly(in);
    

    分享 commons io 工具类 代码

    输入流复制到 输出流

    Writer write = new FileWriter("c:\\kk.dat");
    InputStream ins = new FileInputStream(new File("c:\\text.txt"));
    IOUtils.copy(ins, write);
    write.close();
    ins.close();
    

    文本写入指定文件

    String name = "my name is panxiuyan";
    File file = new File("c:\name.txt");
    FileUtils.writeStringToFile(file, name);  
    

    将输入流转换成文本

    URL url = new URL("http://www.dimurmill.com");
    InputStream ins = url.openStream();
    String contents = IOUtils.toString(ins, "UTF-8");
    System.out.println("Slashdot: " + contents);
    

    文件复制指定的目录

    File srcfile = new File("c:\\Test.java");
    File destDir = new File("D:\\");
    FileUtils.copyFileToDirectory(srcfile, destDir);
    

    网络流保存为文件

    URL url = new URL("http://www.163.com");
    File file = new File("c:\163.html");
    FileUtils.copyURLToFile(url, file);
    

    文件目录操作

    File dir = new File("c:\test");
    FileUtils.cleanDirectory(dir);//清空目录下的文件
    FileUtils.deleteDirectory(dir);//删除目录和目录下的文件
    //目录大小 
    long size = FileUtils.sizeOfDirectory(dir);  
    

    目录操作

    File testFile = new File("testFile.txt");
    //如果不存在,新建
    // 如果存在,修改文件修改时间
    FileUtils.touch(testFile);
    

    记录流的读取写入字节数

    File test = new File("test.dat");
    //输出流的统计
    CountingOutputStream countStream = null;
    //输入流的统计
    //CountingInputStream countStream = null;
    try {
        FileOutputStream fos = new FileOutputStream(test);
        countStream = new CountingOutputStream(fos);
        countStream.write("Hello".getBytes());
    } catch (IOException ioe) {
        System.out.println("Error writing bytes to file.");
    } finally {
        IOUtils.closeQuietly(countStream);
    }
    if (countStream != null) {
        int bytesWritten = countStream.getCount();
        System.out.println("Wrote " + bytesWritten + " bytes to test.dat");
    }
    

    相同的内容写入不同的文本

    File test1 = new File("split1.txt");
    File test2 = new File("split2.txt");
    OutputStream outStream = null;
    try {
        FileOutputStream fos1 = new FileOutputStream(test1);
        FileOutputStream fos2 = new FileOutputStream(test2);
        //包含不同的文本
        outStream = new TeeOutputStream(fos1, fos2);
        outStream.write("One Two Three, Test".getBytes());
        outStream.flush();
    } catch (IOException ioe) {
        System.out.println("Error writing to split output stream");
    } finally {
        IOUtils.closeQuietly(outStream);
    }
    

    文件删除

    File file = new File(("io/project.properties"));
    String display = FileUtils.byteCountToDisplaySize(file.length());
    System.out.println("project.xml is " + display);
    FileUtils.forceDelete(file);
    

    读取取文本中的每一行:

    File file = new File((Test.class.getClass().getResource("/io/web.xml")).getFile());
    List lines = FileUtils.readLines(file, "UTF-8");
    for (int i = 0; i < lines.size(); i++)
        System.out.println(lines.get(i));
    

    相关文章

      网友评论

        本文标题:org.apache.commons.io.FileUtils使

        本文链接:https://www.haomeiwen.com/subject/owjqjftx.html