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

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

http://php.11519.net/5jblog/?p=475

  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方便读写文件的工具类:http://laoyu.info/archives/282.html

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包含了文件操作的相关方法.下面的代码用于读取磁盘上的某个文件:

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


 

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

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


 

文件复制代码:

File src = new File("src.txt");
File dest = new File("dest.txt");
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 工具类 代码:http://www.javaeye.com/topic/575996

输入流复制到输出流 

public class IoTest {   
   
    /**  
     * @param args  
     */   
    public static void main(String[] args) throws Exception {   
        // TODO Auto-generated method stub   
        Writer write = new FileWriter("c:\\kk.dat");   
   
        InputStream ins = new FileInputStream(new File("c:\\text.txt"));   
   
        IOUtils.copy(ins, write);   
        write.close();   
   
        ins.close();   
    }   
   
}   


 

文本写入指定文件 

public class FileWirterTest {   
   
    /**  
     * @param args  
     */   
    public static void main(String[] args) throws Exception{   
        // TODO Auto-generated method stub   
           
        String name = "my name is panxiuyan";   
           
        File file =  new File("c:\\name.txt");   
           
        FileUtils.writeStringToFile(file, name);   
   
    }   
   
}   


将输入流转换成文本 

public class URLIoTest {   
   
    /**  
     * @param args  
     */   
    public static void main(String[] args) throws Exception {   
        // TODO Auto-generated method stub   
        URL url = new URL("http://www.dimurmill.com");   
           
        InputStream ins = url.openStream();   
           
        String contents = IOUtils.toString(ins,"UTF-8");   
        System.out.println( "Slashdot: " + contents );   
   
   
    }   
   
}   


关闭相关流

public class IoCloseTest {   
   
    /**  
     * @param args  
     */   
    public static void main(String[] args) {   
        // TODO Auto-generated method stub   
           
        File file = null;   
           
        InputStream ins = null;   
        try{   
            file = new File("C:\\Test.java");   
               
            ins = new FileInputStream(file);   
        }catch(Exception e){   
            e.printStackTrace();   
        }finally{   
            IOUtils.closeQuietly(ins);   
        }   
   
    }   
   
}   


文件复制

public class FileCopyTest {   
   
    /**  
     * @param args  
     */   
    public static void main(String[] args) throws Exception{   
        // TODO Auto-generated method stub   
           
        File srcfile = new File("c:\\Test.java");   
           
        File destfile = new File("c:\\Test.java.bak");   
           
           
        FileUtils.copyFile(srcfile, destfile);   
   
    }   
   
}   


文件复制指定的目录 

public class FileCopyTest {   
   
    /**  
     * @param args  
     */   
    public static void main(String[] args) throws Exception{   
        // TODO Auto-generated method stub   
           
        File srcfile = new File("c:\\Test.java");   
           
        File destDir = new File("D:\\");   
           
           
        FileUtils.copyFileToDirectory(srcfile, destDir);   
   
    }   
   
}   


网络流保存为文件

public class URLToFileTest {   
   
    /**  
     * @param args  
     */   
    public static void main(String[] args) throws Exception{   
        // TODO Auto-generated method stub   
           
        URL url = new URL("http://www.163.com");   
           
        File file = new File("c:\\163.html");   
           
        FileUtils.copyURLToFile(url, file);   
   
    }   
   
}   


文件目录操作 

public class DirOper {   
   
    /**  
     * @param args  
     */   
    public static void main(String[] args) throws Exception {   
        // TODO Auto-generated method stub   
   
        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 );   
   
}   


 

你可能感兴趣的:(IO,文件复制,文件目录,commons,.FileUtils)