您的位置:首页 > 运维架构 > Apache

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

2014-01-15 01:22 681 查看
利用 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方便读写文件的工具类: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

输入流复制到 输出流

Java代码

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

}

}

文本写入指定文件

Java代码

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

}

}

将输入流转换成文本

Java代码

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

}

}

关闭相关流

Java代码

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

}

}

}

文件复制

Java代码

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

}

}

文件复制指定的目录

Java代码

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

}

}

网络流保存为文件

Java代码

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

}

}

文件目录操作

Java代码

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);//删除目录和目录下的文件

}

}

目录大小

Java代码

long size = FileUtils.sizeOfDirectory(dir);

目录操作

Java代码

File testFile = new File( "testFile.txt" );

//如果不存在,新建

// 如果存在,修改文件修改时间

FileUtils.touch( testFile );

记录流的读取写入字节数

Java代码

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

}

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

Java代码

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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: