StringUtils方法的操作对象是java.lang.String类型的对象,是JDK提供的String类型操作方法的补充,
并且是null安全的(即如果输入参数String为null则不会抛出NullPointerException,而是做了相应处理.(关键点)
导入JAR包:
须将包commons-lang-2.1.jar包放到目录下;
且在CLASS中,进行import org.apache.commons.lang.*;
除了构造器,StringUtils中一共有130多个方法,并且都是static的,所以我们可以这样调用StringUtils.xxx().
(1)
public static boolean isEmpty(String str)
public static boolean isNotEmpty(String str)
判断某字符串是否为空,为空的标准是str==null或str.length()==0
StringUtils.isEmpty(null) = true
StringUtils.isEmpty("") = true
StringUtils.isEmpty(" ") = false //注意在StringUtils中空格作非空处理
(2)
public static boolean isBlank(String str)
public static boolean isNotBlank(String str)
判断某字符串是否为空或长度为0或由空白符(whitespace)构成,比上面的方法,多了一个空白符的判断。
StringUtils.isBlank(" ") = true
(3)
public static String trim(String str)
去掉字符串两端的控制符(control characters, char <= 32),如果输入为null则返回null
下面是示例:
StringUtils.trim(null) = null
StringUtils.trim("") = ""
public static String trimToNull(String str)
去掉字符串两端的控制符(control characters, char <= 32),如果变为null或"",则返回null
StringUtils.trimToNull(null) = null
StringUtils.trimToNull("") = null
public static String trimToEmpty(String str)
去掉字符串两端的控制符(control characters, char <= 32),如果变为null或"",则返回""
StringUtils.trimToNull(null) = ""
StringUtils.trimToNull("") = ""
(4)
System.out.println(StringUtils.center("jason", 7, "*"));
以7个字符输出,除了"jason"5个字符外,其它以*来输出. -->输出字符数,须大于前面的字符.
//输出: *jason*
StringUtils.leftPad("34", 8, "0");
原理同上,只是规定在左边而已.
//输出: 00000034
StringUtils.capitalize("a sentenced to be capitalised");
如果你需要一个字符串中的每个单词第一个字母大写,你可以这么做.
// A Sentenced To Be Capitalised
(4)
判断两个字符串是否相等,若为NULL,同不抛出异常.
StringUtils.equals(null, null) = true
StringUtils.equals("abc", null) = false
StringUtils.equalsIgnoreCase("abc", "ABC") = true
(5)
返回指定字符串之前的所有字符
StringUtils.substringBefore("abc", "a") = ""
StringUtils.substringBefore("abcba", "b") = "a"
StringUtils.substringBefore("abc", "c") = "ab"
StringUtils.substringBefore("abc", "d") = "abc"
StringUtils.substringBefore("abc", "") = ""
StringUtils.substringBefore("abc", null) = "abc"
返回指定字符串之后的所有字符
StringUtils.substringAfter("abc", "a") = "bc"
StringUtils.substringAfter("abcba", "b") = "cba"
StringUtils.substringAfter("abc", "c") = ""
StringUtils.substringAfter("abc", "d") = ""
StringUtils.substringAfter("abc", "") = "abc"
返回最后一个指定字符串之前的所有字符
StringUtils.substringBeforeLast("abcba", "b") = "abc"
StringUtils.substringBeforeLast("abc", "c") = "ab"
StringUtils.substringBeforeLast("a", "a") = ""
StringUtils.substringBeforeLast("a", "z") = "a"
StringUtils.substringBeforeLast("a", null) = "a"
StringUtils.substringBeforeLast("a", "") = "a"
返回最后一个指定字符串之后的所有字符 StringUtils.substringAfterLast(null, *) = null StringUtils.substringAfterLast("", *) = "" StringUtils.substringAfterLast(*, "") = "" StringUtils.substringAfterLast(*, null) = "" StringUtils.substringAfterLast("abc", "a") = "bc" StringUtils.substringAfterLast("abcba", "b") = "a" StringUtils.substringAfterLast("abc", "c") = "" StringUtils.substringAfterLast("a", "a") = "" StringUtils.substringAfterLast("a", "z") = ""
org.apache.commons.io使用实例
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;
public class FileCopyExample {
public static void 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" );
}
}
}
当然,有另外的一个功能,可以将URL的内容存入文件中去:
URL src = new URL( " http://www.nytimes.com" );
File dest = new File( "times.html" );
FileUtils.copyURLToFile( src, dest );
2.文件删除:
File file = new File( ("io/project.properties") );
//byteCountToDisplaySize, 以byte为单位,显示其文件的大小
String display = FileUtils.byteCountToDisplaySize( file.length() );
System.out.println( "project.xml is " + display );
FileUtils.forceDelete(file)
如果你需要删除一个目录下的所有内容(包括其目录),可以这样做:
File dir = new File( "temp" );
FileUtils.deleteDirectory( dir );
如果只想清空目录下所有内容,并不删除该目录,可以这样写:
FileUtils.cleanDirectory( dir );
很简单地,可以得到一个目录的大小:
File dir = new File( "temp" );
long dirSize = FileUtils.sizeOfDirectory( );
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 {
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));
}
}
也可以这样来读取文件内容:
File initf = new File(path+"init.properties");
String inittext = FileUtils.readFileToString(initf,"UTF-8"); -->读取文件内容
inittext = inittext.replaceAll(" \\{ip\\}",ip); -->对文件内容的修改
inittext = inittext.replaceAll(" \\{port\\}",port);
inittext = inittext.replaceAll(" \\{dbname\\}",dbname);
inittext = inittext.replaceAll(" \\{username\\}",username);
inittext = inittext.replaceAll(" \\{passwd\\}",passwd);
inittext = inittext.replaceAll(" \\{safepath\\}",safepath);
File initnewf = new File(initnewpath);
FileUtils.writeStringToFile(initnewf,inittext,"UTF-8"); -->重新写入文件中