刚开始做一个项目,文件名是在header里的,我是从请求的url里(字符串)分离出文件名的。
例如&title=Calvin+Klein+Ad+-+Saturday+Night+Live,得到的url里有这样一个字段。于是我用笨方法写了一个工具方法。
public static String getFileNameFromUrl(String url) {
if (url.startsWith("https")) {
String filename = "";
String filenameTemp = null;
// 得到title字段的索引
int nameIndexTemp = url.indexOf("title=");
// title字段+6是所要的标题字符串
int nameIndex = nameIndexTemp + 6;
// 用title字段找到下一个&所在的位置,用来判断是不是最后一个字段
int nextSplit = url.indexOf("&", nameIndex);
if (nextSplit == -1) {
filenameTemp = url.substring(nameIndex);
} else {
filenameTemp = url.substring(nameIndex, nextSplit);
}
String[] name_arr = filenameTemp.split("\\+");
for (int i = 0; i < name_arr.length; i++) {
filename += name_arr[i];
filename += " ";
}
filename = filename.substring(0, filename.length());
String nameTemp = null;
Uri uri = Uri.parse(filename);
nameTemp = uri.getPath();
return nameTemp + ".mp4";
} else {
URL uRL = null;
try {
uRL = new URL(url);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String temp = uRL.getFile();
String nameTemp = temp.substring(temp.lastIndexOf('/') + 1);
return nameTemp;
}
}
后来我直接用名字做文件名,但是文件名中不能出现几种符号,于是又写了一个方法过滤不想要的符号
public String splitFileTitle(String title) {
String name = "";
String[] name_arr = title.split("\\/|\\\\|:|\\*|\\\"|<|>|\\|");
for (int i = 0; i < name_arr.length; i++) {
name = name + name_arr[i] + " ";
}
String result = name.substring(0, name.length() - 1);
return name + ".mp4";
}