利用org.apache.commons.io.FileUtils快速读写文件 利用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 ) ;
|
输入流复制到输出流
- 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:\
ame.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 );
- }
|
----------------------------
原文链接:https://blog.csdn.net/weixin_30765319/article/details/99967288
程序猿的技术大观园:www.javathinker.net
[这个贴子最后由 flybird 在 2020-01-09 22:45:35 重新编辑]
|