Código de Java - Devolver los archivos que tienen una extensión dada

Imágen de perfil

Devolver los archivos que tienen una extensión dadagráfica de visualizaciones


Java

Publicado el 25 de Julio del 2016 por Xavi
657 visualizaciones desde el 25 de Julio del 2016. Una media de 35 por semana
Dado unos nombres de archivos y una lista de extensiones, este código devuelve los archivos que coinciden con los tipos de extensiones indicadas.

Versión 1.0

Publicado el 25 de Julio del 2016gráfica de visualizaciones de la versión: Versión 1.0
658 visualizaciones desde el 25 de Julio del 2016. Una media de 42 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import java.util.Arrays;
import java.util.Comparator;
 
public class FileExt{
 
	public static void main(String[] args){
		String[] tests = {"text.txt", "text.TXT", "test.tar.gz", "test/test2.exe", "test\\test2.exe", "test2", "a/b/c\\d/foo", "/test/test3.bat","c:\\test\\test3.bat"};
		String[] exts = {".txt",".gz",".bat"};
 
		System.out.println("Extensiones: " + Arrays.toString(exts) + "\n");
 
		for(String test:tests){
			System.out.println(test +": " + extIsIn(test, exts));
		}
	}
 
	public static boolean extIsIn(String test, String... exts){
		// buscamos la posicion de la barra (/) o de las dobrles barras (\\)
		int lastSlash = Math.max(test.lastIndexOf('/'), test.lastIndexOf('\\'));
 
		// obtenemos el ultimo valor despues de la barra
		String filename = test.substring(lastSlash + 1);
 
		// buscamos el ultimo punto en la cadena si lo hubiera, sino, devolvemos la posicion final
		int lastDot = filename.lastIndexOf('.') == -1 ? filename.length() : filename.lastIndexOf('.');
 
		// obtenemos la extension
		String ext = filename.substring(lastDot);
 
		// Ordenamos el array de extensiones
		Arrays.sort(exts);
 
		// utilizamos el método de búsqueda binaria
		// devolvera un numero negativo si no lo encuentra
		return Arrays.binarySearch(exts, ext, new Comparator<String>() {
			@Override
			public int compare(String o1, String o2) {
				return o1.compareToIgnoreCase(o2);
			}
		}) >= 0;
	}
}



Comentarios sobre la versión: Versión 1.0 (0)


No hay comentarios
 

Comentar la versión: Versión 1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s3608