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