利用 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 ); }