首页  :: 新随笔  :: 管理

常用的java工具类

Posted on 2011-08-16 00:03  季枫  阅读(13178)  评论(1)    收藏  举报

StringUtils
这是象面包和奶油一样必须的通用语言库,这个实用工具类包括一些很早以前在String中未包含的重要方法。

 

StringUtils.isEmpty(null&& StringUtils.isEmpty(""); // true  
StringUtils.isBlank("   \n\t");                       // true  
StringUtils.substringAfterLast("foo.bar.baz"".");   // "baz"  
StringUtils.substringBeforeLast("foo.bar.baz"".");  // "foo.bar"  
StringUtils.split("foo.bar.baz"'.');                // { "foo", "bar", "baz" }  
StringUtils.split("foo,  bar,baz""");             // { "foo", "bar", "baz" }  
StringUtils.leftPad("1"3'0');                     // "001"  

 

IOUtils and FileUtils

在一种当你需要手动操作多个文件罕见情况下必须具备的工具,这两个工具很相似(FileUtils操作文件,IOUtils操作InputStream和Reader classes),和捆绑常用IO.

File file1;
File file2;
InputStream inputStream;
OutputStream outputStream;

// copy one file into another
FileUtils.copyFile(file1, file2);
IOUtils.copy(inputStream, outputStream);

// read a file into a String
String s1 = FileUtils.readFileToString(file1);
String s2 
= IOUtils.toString(inputStream);

// read a file into a list of Strings, one item per line

List<String> l1 = FileUtils.readLines(file1);
List
<String> l2 = IOUtils.readLines(inputStream);

// put this in your finally() clause after manipulating streams
IOUtils.closeQuietly(inputStream);

// return the list of xml and text files in the specified folder and any subfolders
Collection<File> c1 = FileUtils.listFiles(file1, { "xml""txt" }, true);

// copy one folder and its contents into another
FileUtils.copyDirectoryToDirectory(file1, file2);

// delete one folder and its contents
FileUtils.deleteDirectory(file1);

 

 

1.文件内容拷贝:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.Writer;
 
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
 
 
publicclass FileCopyExample {
    publicstaticvoid main(String[] args) {
       
try {
           File src 
= new File( "test.dat" );
           File dest 
= new File( "test.dat.bak" );
           
           FileUtils.copyFile( src, dest );
       } 
catch( IOException ioe ) {
           System.out.println( 
"Problem copying file." );
       }
       
       
try {
           File src 
= new File( "test.dat" );
           File dir 
= new File( "./temp" );
 
           FileUtils.copyFileToDirectory( src, dir );
       } 
catch( IOException ioe ) {
           System.out.println( 
"Problem copying file to dir.");
       }
       
       
try {
           String string 
= "Blah blah blah";
           File dest 
= new File( "test.tmp" );
           
           FileUtils.writeStringToFile( dest, string, 
"ISO-8859-1" );
       } 
catch( IOException ioe ) {
           System.out.println( 
"Error writing out a String." );        
       }
       
       
       
try {
           Writer writer 
= new FileWriter( "test.dat" );
           InputStream inputStream 
=FileCopyExample.class
              getClass().getResourceAsStream(
"/io/web.xml");
           IOUtils.copy( inputStream, writer );
           writer.close();
           inputStream.close();
       } 
catch (IOException e) {
           System.out.println( 
"Error copying data" );
       }
 
try {
           File src 
= new File( "test.txt" );
           OutputStream output 
= new FileOutputStream(src);
           InputStream inputStream 
=FileCopyExample.class
              getClass().getResourceAsStream(
"/io/web.xml");
           IOUtils.copy( inputStream, output );
//         writer.close();
           inputStream.close();
           output.close();
       } 
catch (IOException e) {
           System.out.println( 
"Error copying data" );
       }
    }
 
}
 
2.文件删除:
File file 
= new File( ("io/project.properties") );
       String display 
= FileUtils.byteCountToDisplaySize( file.length() );
       System.out.println( 
"project.xml is " + display );
       FileUtils.forceDelete(file) 
 
3.读取取文本中的每一行:
import java.io.File;
import java.io.IOException;
import java.util.List;
 
import org.apache.commons.io.FileSystemUtils;
import org.apache.commons.io.FileUtils;
 
 
public class Test {
 
       
/**
        * 
@param args
        * 
@throws IOException 
        
*/
       
public static void main(String[] args) throws IOException {
              
// TODO Auto-generated method stub
              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));
       }
 
}   

 

Google collections

这是我所知道的最好的扩展实现包,其中一些被社区叫嚣着要加入JDK:

 

// create an ArrayList with three arguments
List<String> list = Lists.newArrayList("foo""bar""baz");

// notice that there is no generics or class cast,
// and still this line does not generate a warning.
Set<String> s = Sets.newConcurrentHashSet();

// intersect and union are basic features of a Set, if you ask me
Set<String> s = Sets.intersect(s1, s2);

// Example  of multiple values in a Map
ListMultimap<String, Validator> validators = new ArrayListMultimap<String, Validator>();
validators.put(
"save"new RequiredValidator());
validators.put(
"save"new StringValidator());
validators.put(
"delete"new NumberValidator());

validators.get(
"save"); // { RequiredValidator, StringValidator }
validators.get("foo");  // empty List (not null)
validators.values();    // { RequiredValidator, StringValidator, NumberValidator }

 

java.util.concurrent

不是每个人都需要这么重的java.util.concurrent,但是很好用:

 

// a map that may be modified (by the same or different thread) while being iterated
Map<String, Something> repository = new ConcurrentHashMap<String, Something>();

// same with lists. This one is only available with Java 6
List<Something> list = new CopyOnWriteArrayList<Something>();


 

智读 | 成都会领科技有限公司官网 | 智读App下载 | 每天听本书的博客 | |