剛開始做一個項目,文件名是在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";
}