最近遇到了从一段路径中获取文件名,于是百度搜了下 大部分都是这种
String[] strs = imgUrl.split("/");
return strs[strs.length - 1];
但是我想了下 这样的效率会不会不是很好,
于是我自己写了一个方法 做了下测试
<pre name="code" class="java">package test;
import java.io.File;
public class test {
public static void main(String[] args) {
System.out.println(getImgNameFirst("D:/folder/fileName.txt"));
System.out.println(getImgNameSecond("D:/folder/fileName.txt"));
}
private static String getImgNameFirst(String imgUrl) {
long start = System.currentTimeMillis();
String str = "";
for (int i = 0; i < 1000; i++) {
String[] strs = imgUrl.split("/");
str = strs[strs.length - 1];
}
long end = System.currentTimeMillis();
System.out.println("getImgNameFirst Time:" + (end - start));
return str;
}
<pre name="code" class="java"><span style="white-space:pre"> </span>private static String getImgNameSecond(String imgSrc) {
long start = System.currentTimeMillis();
String str = "";
for (int m = 0; m < 1000; m++) {
int j = imgSrc.length();
for (int i = j; i > 0; i--) {
if (imgSrc.charAt(i - 1) == '/') {
str = imgSrc.substring(i, j);
break;
}
}
}
long end = System.currentTimeMillis();
System.out.println("getImgNameSecond Time:" + (end - start));
return str;
}
}
可以看出 第二种方法的效率确实比第一种好