txt texto scanner por palabra linea leer fichero delimitadores con clase archivo java file folders

texto - leer un archivo en java



Cómo escanear una carpeta en Java? (7)

¿Cómo puedo obtener una lista de todos los archivos dentro de una carpeta recursivamente en Java?


¿No estás seguro de cómo quieres representar el árbol? De todos modos, aquí hay un ejemplo que escanea todo el subárbol utilizando la recursión. Los archivos y directorios son tratados por igual. Tenga en cuenta que File.listFiles() devuelve null para no-directorios.

public static void main(String[] args) { Collection<File> all = new ArrayList<File>(); addTree(new File("."), all); System.out.println(all); } static void addTree(File file, Collection<File> all) { File[] children = file.listFiles(); if (children != null) { for (File child : children) { all.add(child); addTree(child, all); } } }

Java 7 ofrece un par de mejoras. Por ejemplo, DirectoryStream proporciona un resultado a la vez: la persona que llama ya no tiene que esperar a que se completen todas las operaciones de E / S antes de actuar. Esto permite actualizaciones incrementales de la GUI, cancelación anticipada, etc.

static void addTree(Path directory, Collection<Path> all) throws IOException { try (DirectoryStream<Path> ds = Files.newDirectoryStream(directory)) { for (Path child : ds) { all.add(child); if (Files.isDirectory(child)) { addTree(child, all); } } } }

Tenga en cuenta que el temido valor de retorno nulo ha sido reemplazado por IOException.

Java 7 también ofrece un andador de árbol :

static void addTree(Path directory, final Collection<Path> all) throws IOException { Files.walkFileTree(directory, new SimpleFileVisitor<Path>() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { all.add(file); return FileVisitResult.CONTINUE; } }); }



En JDK7, "más características de NIO" deberían tener métodos para aplicar el patrón de visitante sobre un árbol de archivos o solo los contenidos inmediatos de un directorio; no es necesario encontrar todos los archivos en un directorio potencialmente enorme antes de iterar sobre ellos.


También puede usar la interfaz FileFilter para filtrar lo que desea. Se utiliza mejor cuando se crea una clase anónima que lo implementa:

import java.io.File; import java.io.FileFilter; public class ListFiles { public File[] findDirectories(File root) { return root.listFiles(new FileFilter() { public boolean accept(File f) { return f.isDirectory(); }}); } public File[] findFiles(File root) { return root.listFiles(new FileFilter() { public boolean accept(File f) { return f.isFile(); }}); } }


Visualizar la estructura del árbol fue la forma más conveniente para mí:

public static void main(String[] args) throws IOException { printTree(0, new File("START/FROM/DIR")); } static void printTree(int depth, File file) throws IOException { StringBuilder indent = new StringBuilder(); String name = file.getName(); for (int i = 0; i < depth; i++) { indent.append("."); } //Pretty print for directories if (file.isDirectory()) { System.out.println(indent.toString() + "|"); if(isPrintName(name)){ System.out.println(indent.toString() + "*" + file.getName() + "*"); } } //Print file name else if(isPrintName(name)) { System.out.println(indent.toString() + file.getName()); } //Recurse children if (file.isDirectory()) { File[] files = file.listFiles(); for (int i = 0; i < files.length; i++){ printTree(depth + 4, files[i]); } } } //Exclude some file names static boolean isPrintName(String name){ if (name.charAt(0) == ''.'') { return false; } if (name.contains("svn")) { return false; } //. //. Some more exclusions //. return true; }


import java.io.File; public class Test { public static void main( String [] args ) { File actual = new File("."); for( File f : actual.listFiles()){ System.out.println( f.getName() ); } } }

Muestra indistintamente archivos y carpetas.

Consulte los métodos en la clase Archivo para ordenarlos o evitar la impresión de directorio, etc.

http://java.sun.com/javase/6/docs/api/java/io/File.html


public static void directory(File dir) { File[] files = dir.listFiles(); for (File file : files) { System.out.println(file.getAbsolutePath()); if (file.listFiles() != null) directory(file); } }

Aquí dir es el directorio que se escaneará. por ejemplo c:/