¿Cómo abrir un archivo sin conocer su extensión pero sabiendo su nombre completo?
Intent tostart = new Intent(Intent.ACTION_VIEW); tostart.setDataAndType(Uri.parse(video_path+".***"), "video/*"); startActivity(tostart);
Digamos que tengo una ruta de acceso de archivo
/mnt/sdcard/video/my_birthday_moovie001
'My_birthday_moovie001' puede ser .mkv
, .mpg
o .mkv
. He intentado agregar ". ***" a la ruta del archivo pero todavía no puedo abrir el archivo.
- Confirmación de mi comprensión del principio de Android Concept (uso de múltiples actividades)
- Android Intent para HTTP MP3 stream en HTC Incredible
- Abrir archivo adjunto .txt de correo electrónico en la aplicación para Android
- Problema de imagen borrosa en vista de imagen
- Cerrar sesión desde la aplicación Android
- El método Onclick no funciona en android
- Android Intent Clear No funciona
- Iniciar y detener la grabación desde un botón en una notificación
- Receptor Android BroadCast para vibración y silencio
- Android, Detectar cuándo se lanzan otras aplicaciones
- ¿Cuál es la diferencia entre la actividad y la intención en Android?
- Pasar ArrayList <MyObject> entre múltiples actividades
- Android deep-linking. El intento no se restablece cuando se abre la aplicación desde el historial
Bueno, leí los comentarios que han almacenado su camino en db sin extensiones hay muchas extensiones que existe para Android no puede escoger automáticamente la extensión que tiene que crear alguna forma de detectar la extensión.
Siguiente es una manera robusta que es el mejor partido en su caso, pero no se recomienda en casos adecuados, donde las extensiones son conocidos
public String chk_path(String filePath) { //create array of extensions String[] ext=new String[]{".mkv",".mpg"}; //You can add more as you require //Iterate through array and check your path which extension with your path exists String path=null; for(int i=0;i<ext.Length;i++) { File file = new File(filePath+ext[i]); if(file.exists()) { //if it exists then combine the extension path=filePath+ext[i]; break; } } return path; }
Ahora para reproducir una canción en su código
if(chk_path(video_path)!=null) { Intent tostart = new Intent(Intent.ACTION_VIEW); tostart.setDataAndType(Uri.parse(video_path), "video/*"); startActivity(tostart); } else //tell user that although the path in database but file on this path do not exists
Bueno, ya que poner comentarios
Podría comparar si la ruta coincide con cualquier nombre de archivo (no contiene la extensión) y, a continuación, si lo tiene.
Simplemente puede hacer esto:
Obtener la ruta del directorio
File extStore = Environment.getExternalStorageDirectory();
Establecer el nombre de archivo my_birthday_moovie001
en mi ejemplo me puse unnamed
pero cambiarlo como tu gusta
String NameOfFile = "unnamed";
Añadir los videos
, lo pongo Downloads
pero se puede cambiar
String PathWithFolder = extStore + "/Download/";
Cree un método que enumere todos los archivos de su ruta de acceso
private List<String> getListFiles(File parentDir) { ArrayList<String> inFiles = new ArrayList<String>(); File[] files = parentDir.listFiles(); for (File file : files) { if (file.isDirectory()) { inFiles.addAll(getListFiles(file)); } else { String AbsolutePath = file.getAbsolutePath(); //Get the file name ex : unnamed.jpg String nameofFile = AbsolutePath.substring(AbsolutePath.lastIndexOf("/") + 1, AbsolutePath.length()); //Remove the .jpg --> Output unnamed String fileNameWithoutExtension = nameofFile.substring(0, nameofFile.lastIndexOf('.')); //Add each file inFiles.add(fileNameWithoutExtension); } } return inFiles; }
Tienes los nombres de los archivos haciendo esto
List<String> files = getListFiles(new File(PathWithFolder));
Simplemente agregue un for
que busque una coincidencia de su file
for (int i = 0; i<=files.size()-1; i++){ if(PathWithFolder.equals(files.get(i))) { Toast.makeText(MainActivity.this, "You got it!", Toast.LENGTH_SHORT).show(); } else{ Toast.makeText(MainActivity.this, "You don't.", Toast.LENGTH_SHORT).show(); } }
Si desea obtener el camino también y hacer lo que @Zain Ul Abidin
propuesto y compararlo en el método getListFiles()
agregue esto:
String fileExtension = nameofFile.substring(nameofFile.lastIndexOf("."));
Espero eso ayude.
Usted puede intentar de esta manera, primero obtener el nombre del archivo y la extensión a continuación, finalmente comparar e implementar. Me gusta esto :
El nombre de archivo de ejemplo es 04chamelon y la extensión es .png:
File f = new File("/mnt/storage/sdcard/Pictures/04chameleon"); File yourDir = new File("/mnt/storage/sdcard/Pictures"); nametwo = f.getName(); for (File fa : yourDir.listFiles()) { if (fa.isFile()) fa.getName(); String path = fa.getName(); // getting name and extension filextension = path.substring(path.lastIndexOf(".") + 1); // seperating extension name1 = fa.getName(); int pos = name1.lastIndexOf("."); if (pos > 0) { name1 = name1.substring(0, pos); } } if (name1.equals(nametwo)) { Intent tostart = new Intent(Intent.ACTION_VIEW); tostart.setDataAndType(Uri.parse(f + "." + filextension), "image/*"); //tostart.setDataAndType(Uri.parse(f + "." + filextension), "video/*"); startActivity(tostart); }
De la otra pregunta:
Considere DirectoryScanner de Apache Ant:
DirectoryScanner scanner = new DirectoryScanner(); scanner.setIncludes(new String[]{"**/*.java"}); scanner.setBasedir("C:/Temp"); scanner.setCaseSensitive(false); scanner.scan(); String[] files = scanner.getIncludedFiles();
Tendrá que hacer referencia a ant.jar (~ 1.3 MB para la hormiga 1.7.1).
Y luego, ejecutar en el array de archivos y comprobar si los archivos [i] .include (yourfile) yourfile = files [i]
- Vista en pantalla completa de pantalla oculta snackbar
- Android: ¿Realmente necesito la autenticación personalizada de Firebase?