在我的應用程序中,當我們從sdcard中瀏覽文件時,文件將是.text,.jpg和mpeg4ie視頻文件。我想將每個文件類型存儲到一個特定的文件夾中。例如,.text文件轉到文本文件夾。我的問題是當我選擇文件時,如何檢查文件擴展名?如何在android中檢查文件擴展名
回答
我將文件名稱作爲一個字符串,將其拆分爲一個「。」數組。作爲分隔符,然後獲取數組的最後一個索引,這將是文件擴展名。例如:
public class main {
public static void main(String[] args) {
String filename = "image.jpg";
String filenameArray[] = filename.split("\\.");
String extension = filenameArray[filenameArray.length-1];
System.out.println(extension);
}
}
,輸出:
jpg
還沒有機會來運行這個(所以可能無法正常工作100%),但它應該是你在找什麼:
File files[] = Environment.getExternalStorageDirectory().listFiles();
for (File f : files)
{
String fullPath = f.getAbsolutePath();
int dot = fullPath.lastIndexOf(".");
String ext = fullPath.substring(dot + 1);
if(ext.equalsIgnoreCase("txt")) // make sure case is irrelevant for your use case; otherwise use ext.equals("txt")
{
//do something with f here
}
}
Thanx很多Mike和Brenden, – 2011-02-04 09:26:00
'if(ext.equals(txt))''而不是'if(ext ==「txt」)' – IHeartAndroid 2014-05-12 08:05:50
你也可以做下面的事情並使用endswith。
public void walkdir(File dir) {
String txtPattern = ".txt";
String jpgPattern = ".jpg";
String mp3Pattern = ".mp3";
File listFile[] = dir.listFiles();
if (listFile != null) {
for (int i = 0; i < listFile.length; i++) {
if (listFile[i].isDirectory()) {
walkdir(listFile[i]);
} else {
if (listFile[i].getName().endsWith(txtPattern)){
//put in txt folder
}else if (listFile[i].getName().endsWith(jpgPattern.toLowerCase())){
// put in jpg folder
}else if (istFile[i].getName().endsWith(mp3Pattern.toLowerCase())) {
// put in mp3 folder
}
}
}
}
}
對不起,沒有檢查工作,但它應該爲你做。
,或者你可能只是做
MimeTypeMap.getFileExtensionFromUrl(myfile.toURL().toString());
注意:這個方法並不十分可靠,但..
public static String getFileExt(String fileName) {
return fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length());
}
如果你想獲得所有具有特定擴展名的特定文件目錄:
File[] files = (new File("/sdcard/yourDirectory/").listFiles(new CustomFilter());
....
class CustomFilter implements FileFilter
{
//Add the file extensions you want to look for here:
private String[] extension =
{ "text", "jpg", "jpeg", "mpeg" };
@Override
public boolean accept(File pathname)
{
String name = pathname.getName().toLowerCase();
for (String anExt : extension)
{
if (name.endsWith(anExt))
{
// A file has been detected with that extension
return true;
}
}
return false;
}
}
我發現很好的例子在docs.oracle.com如何獲得文件擴展名retu小寫RN文件類型的擴展名或空,如果沒有文件擴展名:
/*
* Get the extension of a file.
*/
public static String getExtension(File f) {
String ext = null;
String s = f.getName();
int i = s.lastIndexOf('.');
if (i > 0 && i < s.length() - 1) {
ext = s.substring(i + 1).toLowerCase();
}
return ext;
}
這個工作對我來說:
當文件/mnt/sdcard/boomerang/2013-06-18_12:08:53.txt
,"txt"
返回。
請注意URLEncoder.encode
和.repalce
調用應解決您在單獨調用MimeTypeMap.getFileExtensionFromUrl
時可能會看到的任何可靠性問題。例如,如果沒有編碼和替換調用,文件名(例如"Test Image!.jpg"
)會返回空字符串。還要確保文件名是小寫。它MimeTypeMap
似乎沒有.PNG
或.JPG
的條目。
public String getExtension(File file) {
String fileName = file.getName();
try {
if (fileName.contains("\\.")) {
String filenameArray[] = fileName.split("\\.");
extension = filenameArray[filenameArray.length - 1];
} else {
extension = "dir";
}
} catch (Exception e) {
extension = "err";
}
return extension;
}
找到文件擴展名的最簡單方式是使用lastIndexOf('.')
,假定文件的名稱中包含擴展名。請檢查下面的代碼
String fileName = "test.jpg";
int i = fileName.lastIndexOf('.');
String fileExtension = fileName.substring(i+1);
Log.v("FILE EXTENSION: ",fileExtension);
您可以使用FilenameUtils從阿帕奇百科全書:
String extension = FilenameUtils.getExtension(mFile.getName());
下面是測試所有的情況下
String getExtension(String fileName){
final String emptyExtension = "";
if(fileName == null){
return emptyExtension;
}
int index = fileName.lastIndexOf(".");
if(index == -1){
return emptyExtension;
}
return fileName.substring(index + 1);
}
東西是一個方法.endsWith (「您的分機」)
String whatever = you String;
if(whatever.endsWith("jpg")){
// your jpg code
}else if(whatever.endsWith("png")){
// your png code
}
- 1. 檢查文件擴展名在android中
- 2. Android - 檢查文件擴展名是.mp4
- 3. 在Formview中檢查文件擴展名
- 4. 如何在IsolatedStorage中檢查文件的文件擴展名?
- 5. 如何檢查文件是否存在文件擴展名? C#
- 6. php檢查文件擴展名爲
- 7. 用PHP檢查文件擴展名
- 8. ssh.net檢查文件擴展名
- 9. 文件擴展名的多重檢查
- 10. 檢查有效的文件擴展名
- 11. 檢查的文件擴展名
- 12. PHP檢查文件擴展名
- 13. python argparse文件擴展名檢查
- 14. 如何檢查c中的文件擴展名?
- 15. 如何在上傳時檢查.xlsx文件擴展名
- 16. Python:檢查文件名以擴展名列表中的擴展名結尾
- 17. Android - 如何獲取文件擴展名?
- 18. 如何查找文件的擴展名?
- 19. mod_rewrite文件檢查擴展
- 20. 這是我如何檢查特定文本文件中的文件擴展名?
- 21. 你如何檢查devtools.html的擴展名?
- 22. 如何使用Platform :: String檢查文件的擴展名?
- 23. 如何用數組檢查文件擴展名
- 24. 如何檢查文件擴展名zend驗證器?
- 25. 如何檢查文件擴展名是大寫還是小寫?
- 26. 如何使用Perl檢查文件的擴展名?
- 27. 檢查沒有擴展名的文件名是否存在
- 28. Go(Golang) - 檢查文件擴展名在Go中不工作
- 29. 使用PHP在上傳表格中檢查文件擴展名
- 30. 如何使用檢查文件擴展名來導入CodeIgniter中的Excel文件?
假設擴展名存在,我寧願使用filename.substring(filename.lastIndexOf('。')+ 1)來獲得擴展名。使用正則表達式這樣簡單的東西是矯枉過正的(而且速度較慢)。 – 2012-04-01 20:27:15
rrrrrray,你知道他們說什麼假設... – 2012-04-01 20:55:31
我試圖解決的問題是不使用正則表達式來完成像這樣的簡單任務,而不是錯誤檢查。 – 2012-04-01 21:15:34