小编来为大家介绍几款比较常用的Java开发工具:
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>();
以上就是关于“比较常用的Java工具类”的介绍