私のアプリケーションでは、sdcardからファイルをブラウズすると、ファイルは.text、.jpg、mpeg4ieのビデオファイルになります。私はそれぞれのファイルタイプを特定のフォルダに保存したい。たとえば、.textファイルはテキストフォルダに移動します。私の質問は、私がファイルを選択するとき、どのようにファイル拡張子をチェックするのですか?androidのファイル拡張子をチェックする方法
答えて
私は文字列としてファイル名を取得し、それを "。"の配列に分割します。区切り文字として使用して、ファイル拡張子となる配列の最後のインデックスを取得します。
jpg
がこれを実行する機会がなかった(ので、100%動作しない場合があります)が、それはあなたが探しているものでなければなりません:
たとえば、次のように出力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);
}
}
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 alot Mike And Brenden、 –
'if(ext == "txt")'ではなくif(ext.equals(txt)) ' – IHeartAndroid
@IHeartAndroidが更新されました。 – brendan
また、以下のようにして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());
注意を行うことができます:この方法はしかし非常に信頼性がない..です
ファイル#toURL()は推奨されていません。myfile.toURI()。toURL()。toString() – Somatik
これはユニコードファイル名をサポートしていません。 –
public static String getFileExt(String fileName) {
return fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length());
}
+1部分について説明できますか? – RoCk
@ RoCK +1がなければ、たとえば、 "jpg"ではなく ".jpg"となります。ドットに注意してください。 – newfivefour
fileName.substring(fileName.lastIndexOf( "。")+ 1)として簡略化できます。 – rzaaeeff
あなたが特定の特定の拡張子を持つファイルのすべてを取得したい場合ディレクトリ:
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;
}
}
私はretuファイルの拡張子を取得する方法をdocs.oracle.comで素敵な例を発見しましたRNファイルタイプの小文字の拡張子または拡張子がファイルされていない場合はnull:
/*
* 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
のエントリがないようです。
'String ext =" "、fileName = file.getName()。toLowerCase(); try {ext = MimeTypeMap.getFileExtensionFromUrl(fileName); } catch(例外e){e.printStackTrace(); } '私のために働いた。 – zanky
@zankyそれは多くの時間を費やしますが、予期せず失敗したケース(正確には何ヶ月かのことを忘れています)があります。私の経験上、ファイル名に 'Uri.encode'を呼び出すと、失敗のケースはゼロになりました。 – Xavi
@ Xavi ...あなたが正しいかもしれませんが、私の場合、 'Uri.Encode'を使用したときに、' 3gp%4a%5D ... 'のような形式のファイルの拡張子をエンコードして戻していました。 encode()メソッドを削除しました。 – zanky
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('.')
と仮定したファイル名を使用している拡張機能が含まれています。あなたはのApache CommonsのからFilenameUtilsを使用することができます
String fileName = "test.jpg";
int i = fileName.lastIndexOf('.');
String fileExtension = fileName.substring(i+1);
Log.v("FILE EXTENSION: ",fileExtension);
次のコードを確認してください:ここで
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. mod_rewriteファイルの拡張子のチェック
- 2. phpの特定の拡張子をチェックする方法
- 3. Android拡張子.docを開く方法
- 4. ファイル拡張子の取得方法は?
- 5. incファイルのファイル名拡張子を保護する方法は?
- 6. ファイル拡張子
- 7. ファイル拡張子がある場合にのみファイル拡張子を検証する方法は?再:carrierwave
- 8. ディレクトリ内のファイルの拡張子を確認するか、異なる拡張子amog特定の拡張子を検索する方法をObjective-Cの
- 9. PHPのファイル拡張子を決定する方法は?
- 10. Carrierwaveファイルの拡張子を取得する方法
- 11. Linuxの.sh拡張子ファイルを作成する方法
- 12. log4netファイル拡張子
- 13. JSONファイル拡張子
- 14. fuelphp - ファイル拡張子
- 15. ファイル拡張子Python
- 16. SQLite:.sqliteファイル拡張子.dbファイル拡張子
- 17. 拡張子の名前とアイコンをファイル拡張子で取得する最速の方法は?
- 18. Fortran:文字からファイル拡張子を削除する方法
- 19. gedit(Windows版)にファイル拡張子を追加する方法
- 20. ファイルの拡張子を見つける方法
- 21. ファイルの拡張子を変更する
- 22. jqueryのファイル拡張子
- 23. PowerShell 3のファイル拡張子
- 24. Powershell Count各ファイル拡張子の合計ファイルサイズを含むファイル拡張子
- 25. ディレクトリに複数のファイルのファイル拡張子を変更する方法
- 26. tcsh:複数のファイルのファイル拡張子を変更する方法は?
- 27. ファイル拡張子をトリミングするUITableView
- 28. ファイル拡張子をAndroidのAirアプリに関連付けます。
- 29. 投稿ファイル拡張子asp.net
- 30. ファイル拡張子フィルタリングが
拡張子があると仮定して、ファイル名.substring(filename.lastIndexOf( '。')+ 1)を使用して拡張子を取得します。このような単純なもののための正規表現を使用することは、過剰な(そしてそれはより遅いです)。 –
rrrrrray、あなたは彼らが仮定していることを知っています... –
私が克服しようとしているのは、エラーチェックではなく、このような単純なタスクで正規表現を使用しないことです。 –