Szukanie plików nowych i o późniejszej dacie modyfikacji

0

Witam!!

Chciałbym zrobić następującą rzecz:

Mam dwa foldery:A I B

Stworzyłem dla każdego folderu po dwie Listy

List<String> Anazwyplikow= new ArrayList<String>();
List<Date> Adatamodyfikacji = new ArrayList<Date>();
List<String> Bnazwyplikow = new ArrayList<String>();
List<Date> Bdatamodyfikacji = new ArrayList<Date>();

i umieściłem w nich informacje o plikach.

Moim celem jest, aby znaleźć pliki, które znajdują się w folderze B, a nie ma ich w folderze A ORAZ pliki o takiej samej nazwie w dwóch folderach, ale o późniejszej dacie modyfikacji. Jakieś pomysły? Nie wiem czy moje podejście z tymi listami jest dobre. Może istnieje jakieś lepsze rozwiązanie.

1

http://docs.oracle.com/javase/7/docs/api/

liki, które znajdują się w folderze B, a nie ma ich w folderze A

listB.removeAll(listA)
listB bedzie zawierac to czego szukasz,

ORAZ pliki o takiej samej nazwie w dwóch folderach, ale o późniejszej dacie modyfikacji.

tutaj proponuje przeszukać to w pętli, gdzie bedziesz sprawdzac nazwe oraz date

0

a po co cztery listy? nie lepiej stworzyć dwie obiektów file? albo klasy zawierającej dwa pola nazwa i data?

jak będziesz miał dwie listy to jedziesz for-em po jednej i sprawdzasz w drugiej.

możesz to zrobić i teraz tylko musisz porównywać dwie listy. i uważaj żeby znak == nie zwrócił Ci braku równości. Lepiej używać equals

pozdro

0

stosowanie equal jest dość ryzykowne, gdyż:

boolean equals(Object obj)
Tests this abstract pathname for equality with the given object.

W tym przypadku, kiedy pliki znajdują się w różnych folderach mają różne pathname,
pomysł wojciechmaciejewski jest ok, natomiast trzeba by sprawdzić file1.getName().isEqual(file2.getName()) i podobnie pokombinować z datą

0

tak czy inaczej problem rozwiązany :)

0
		public static void Szukajplikownieistniejacych(List<File> A,List<File> B){
	
		List<File> Notexist = new ArrayList<File>();
		for (File files : B) {
		if (A.contains(files)==false){
			
			Notexist.add(files);
			
		}
		
		}
		for(int i =0; i<Notexist.size();i++)
		System.out.println(Notexist.get(i).getName());
	}

Tak zrobiłem szukanie plików nieistniejących. Zamieniłem dwie tablice na jedną typu File. I nie wiem czemu nie działa.
W katalogu A mam plik.txt
W katalogu B mam plik.txt i plik1.txt
Pogram wywala mi plik.txt i plik1.txt, a powinien tylko plik1.txt.

1

Wystarczy przeczytać to co napisaliśmy z wojciechmaciejewski powyżej i będziesz wiedzieć dlaczego nie działa.

Dodaj pętlę dla pierwszej listy, następnie iterując drugą listę sprawdzaj nazwy plików. Wywołanie contains nic Ci nie da bo pliki są w różnych folderach

1 użytkowników online, w tym zalogowanych: 0, gości: 1