Java odczyt wszystkich plików z folderu czy możliwe?


(Clank) #1

Witam,

Mam pytanie w sumie to takie jak w temacie, mianowicie czy istnieje sposób na zbudowanie metody, którą będzie wypisywać do konsoli informacje ze wszystkich plików jakie znajdują się w danym folderze? Zrobiłem zapis obiektów jako osobne pliki i teraz chciałbym mieć możliwość wyrzucenia wszystkich informacji o nich na ekran. A no i nie ma takiej opcji żebym podawał nazwę pliku sam bo jest ich zbyt dużo i zbyt długo by to trwało. Proszę o odpowiedź i z góry dzięki. :slight_smile:


(Razi) #2

A próbowałeś “skanować folder”? Klasa File odwołuje się też do katalogów i ma odpowiednie metody do tego:

http://docs.oracle.com/javase/7/docs/ap … iles%28%29


(Enterbios) #3

Pewnie Cię zaskoczę ale w javie to możliwe :smiley:

import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

import java.io.IOException;


public class FilesContentReader {


	private static final boolean RECURSIVE = false;


	public static void main(String[] args) throws IOException {

		String dirPathname = "C:/folder";

		File directory = new File(dirPathname);


		if(!directory.isDirectory()){

			System.out.println(dirPathname + " is not directory");

		}


		printContentOfFilesInDirectory(directory);

	}


	private static void printContentOfFilesInDirectory(File directory) throws IOException {

		File[] files = directory.listFiles();

		for (File file : files) {

			if(file.isFile()){

				printFile(file);

			} else if(file.isDirectory() && RECURSIVE){

				printContentOfFilesInDirectory(file);

			}

		}

	}


	private static void printFile(File file) throws IOException{

		BufferedReader reader = new BufferedReader(new FileReader(file));

		try {

			printReaderContent(reader);

		}finally{

			reader.close();

		}

	}


	private static void printReaderContent(BufferedReader reader) throws IOException {

		String line = null;

		while( (line = reader.readLine()) != null ){

			System.out.println(line);

		}

	}


}

Daje gotowca ;p

Do zmiennej dirPathname podstaw sobie ścieżkę do folderu.

Dodatkowo dodałem flagę którą możesz wybrać rekurencyjne przechodzenie po katalogach -> jak ustawisz RECURSIVE na true to wypisze zawartość wszystkich plików w katalogu i jego podkatalogach.