JAVA Directorio: Lista de ficheiros nun directorio

Introduci贸n

Moitas aplicaci贸ns manipular ficheiros de algunha maneira e manipulaci贸n de ficheiros 茅 un dos b谩sicos Co帽ecemento en calquera linguaxe de programaci贸n.

Para manipular ficheiros, necesitamos saber onde est谩n localizados. Ter unha descrici贸n xeral dos ficheiros dun directorio 茅 primordial se queremos lograr isto, especialmente se podemos realizar operaci贸ns nelas a trav茅s de iteraci贸n. Hai varias formas de facelo en Java, que mostraremos ao longo deste artigo.

Por mor da sinxeleza, todos os exemplos escribiranse para a seguinte 谩rbore de ficheiros:

FILE.LIST ()

O m茅todo m谩is sinxelo para listar nomes e cartafoles do ficheiro nun directorio dado, sen pasar por subdirectorios, 茅 o m茅todo auxiliar. .list(), que devolve unha matriz de String s.

Facemos isto usando o nun File Exemplo:

public class Pathnames { public static void main(String args) { // Creates an array in which we will store the names of files and directories String pathnames; // Creates a new File instance by converting the given pathname string // into an abstract pathname File f = new File("D:/Programming"); // Populates the array with names of files and directories pathnames = f.list(); // For each pathname in the pathnames array for (String pathname : pathnames) { // Print the names of files and directories System.out.println(pathname); } }}

Usar un simple para cada loop , mollado a trav茅s da matriz e imprimir o String s.

CodingMusicminimax.csuper_hack.pyTODO.txt

Con este enfoque, todos os elementos do non se amosan, e unha desvantaxe deste enfoque 茅 que realmente non podemos facer nada cos ficheiros en si. Estamos a obter os seus nomes. 脡 煤til cando s贸 queremos botar unha ollada aos ficheiros na parte inferior da letra.

filenamfilter

Outra cousa que podemos facer co .list() O m茅todo 茅 crear un FilenameFilter para devolver s贸 os ficheiros que queremos:

File f = new File("D:/Programming");// This filter will only include files ending with .pyFilenameFilter filter = new FilenameFilter() { @Override public boolean accept(File f, String name) { return name.endsWith(".py"); } };// This is how to apply the filterpathnames = f.list(filter);

Executar este fragmento de c贸digo que producir铆a:

file.listFiles ()

Similar ao m茅todo anterior, pode usarse isto Para devolver os nomes e os directorios do ficheiro, pero esta vez obtelos como unha matriz de obxectos

, que nos proporcionan a posibilidade de manipulaci贸n directa:

public class Pathnames { public static void main(String args) { // try-catch block to handle exceptions try { File f = new File("D:/Programming"); FilenameFilter filter = new FilenameFilter() { @Override public boolean accept(File f, String name) { // We want to find only .c files return name.endsWith(".c"); } }; // Note that this time we are using a File class as an array, // instead of String File files = f.listFiles(filter); // Get the names of the files by using the .getName() method for (int i = 0; i < files.length; i++) { System.out.println(files.getName()); } } catch (Exception e) { System.err.println(e.getMessage()); } }}

sa铆da:

minimax.c

Agora, imos pasar polo sistema de ficheiros usando a recursi贸n e alg煤ns m茅todos m谩is para usar no File Obxecto:

sa铆da:

Girl Talk - All Day.mp3 (size in bytes: 8017524)Celldweller - Frozen.mp3 (size in bytes: 12651325)Lim Taylor - Isn't It Wonderful.mp3 (size in bytes: 6352489)Radiohead - Everything in Its Right Place.mp3 (size in bytes: 170876098)minimax.c (size in bytes: 20662)super_hack.py (size in bytes: 114401)TODO.txt (size in bytes: 998)

ficheiros.walk ()

en Java 8 e presentio Res N贸s usamos a clase

para poboar un Stream e usalo para viaxar arquivos e directorios, ao mesmo tempo, a trav茅s de recursivamente os subdirectorios .

Por favor, te帽a en conta que neste exemplo imos usar expresi贸ns lambda:

public class FilesWalk { public static void main(String args) { try (Stream<Path> walk = Files.walk(Paths.get("D:/Programming"))) { // We want to find only regular files List<String> result = walk.filter(Files::isRegularFile) .map(x -> x.toString()).collect(Collectors.toList()); result.forEach(System.out::println); } catch (IOException e) { e.printStackTrace(); } }}

Aqu铆, temos unha poboaci贸n Stream usando o m茅todo , pasando a Paths argumento. O Paths a clase consta de m茅todos est谩ticos que devolven a Path baseado nunha cadea URI e usando un Path, podemos localizar facilmente o ficheiro.

Path, Paths, Files e moitas outras clases pertencen ao paquete

, que foi introducido en Java 7 como unha forma m谩is moderna de representar ficheiros sen bloquear.

Ent贸n, usando o marco de recollida, x茅rase unha lista.

Executar Este fragmento de c贸digo producir谩:

D:ProgrammingCoding MusicRadiohead - Everything in Its Right Place.mp3D:ProgrammingCoding MusicLim Taylor - Isn't It Wonderful.mp3D:ProgrammingCoding MusicCelldweller - Frozen.mp3D:ProgrammingCoding MusicGirl Talk - All Day.mp3D:Programmingminimax.cD:Programmingsuper_hack.pyD:ProgrammingTODO.txt

Conclusi贸n

Xesti贸n de ficheiros de algunha maneira 茅 unha tarefa central para a maior铆a dos idiomas de programaci贸n e incl煤e a capacidade de listar e atopar ficheiros no sistema de ficheiros. Para manipular ficheiros, necesitamos saber onde est谩n localizados. Ter unha descrici贸n xeral dos ficheiros dun directorio 茅 primordial se queremos lograr isto, especialmente se podemos realizar operaci贸ns sobre eles a trav茅s de iteraci贸n.

Neste artigo mostramos varias formas diferentes en Java para listar arquivos No sistema de ficheiros, utilizando enfoques lineais e recursivos.

Valora esta publicaci贸n

Deixa unha resposta

O teu enderezo electr贸nico non se publicar谩 Os campos obrigatorios est谩n marcados con *