Newsgroup: it.comp.java
Titolo: ricerca file.zip in directory

Ciao a tutti!
Ho costruito questo codice per elencare una lista di file all'interno
di una directory escludendo i file nascosti.
Ho necessità di elencare però SOLO i file .zip e non altri.
Ho visto che qualcuno usa il metodo Pattern, ma come?
Grazie dell'aiuto e scusate la banalità, sono una neofita.
Ciao!
import java.io.*;
import java.util.zip.*;
import java.util.regex.Pattern;
public class carcache {
	public static void main(String[] args) {
    File cacheDirectory= new File("c:/prova");
	File[] children = cacheDirectory.listFiles();
	FilenameFilter filter = new FilenameFilter() {
		public boolean accept(File dir, String name) {
   			return !name.startsWith(".");
		}
               };
	if (children == null) {
	// Either dir does not exist or is not a directory
                 } else {
	            for (int i=0; i<children.length; i++) {
	            // Get filename of file or directory
	            File filename = children[i];
	            System.out.println(children[i]);
	  }
         }
	children = cacheDirectory.listFiles(filter);
	System.out.println(children);
 
	}
}

     File cacheDirectory= new File("c:/prova");
Non entro nel merito, ma quello che hai scritto non è un percorso:
1) nè windows ("c:\\prova" semmai)
2) nè unix ("./c/prova" ad esempio)
Scommetto che sei su win, quindi prova la 1)


c:/prova equivale a c:\\prova
che c'entra?

 che c'entra?
Allora datemi il benvenuto sulla terra, perché non lo sapevo! Ho sempre 
raddoppiato le backslash...


Usare lo / al posto del doppio \\ è indiscussamente + pratico, non 
trovi, soprattutto in stringhe molto lunghe con percorsi interminabili.
a proposito di percorsi, è consigliabile inserire sempre percorsi 
relativi e non assoluti in modo da rimanere indipendenti dal SO utilizzato.

ho risolto grazie, ecco la soluzione. Ho usato il metodo endsWith della
classe String per trovare solo i file zip
ecco qua
File dir=new File("c:/prova");
		System.out.println("Apro la directory "+dir.getAbsolutePath());
		File[] cont=dir.listFiles();
		int MAX=cont.length;
		for (int i = 0; i<MAX; i++)
		{
		String tmp=cont[i].getName();
		if ((tmp.endsWith(".zip"))||(tmp.endsWith(".ZIP")))
		{
//		   è un file .zip
		System.out.println("Ho trovato "+tmp);
		controllaZip(cont[i]);
 
		};
grazie a tutti!
^_^

Manuel T ha scritto:

/ è il separatore "ufficiale", quello standard e supportato su tutte le
piattaforme.. poi dow (e poi windows) vogliono complicare le cose e
usano \ (che nelle stringhe devi \\), ma / è sempre accettato e
corretto, mentre \\ vale solo su windows --> usa sempre e solo /


Comunque, se volete evitarvi di queste turbe, la costante
File.pathSeparator sta messa lì apposta.
Per venire alla domanda iniziale, puoi farti una classe che implementa
FileFilter e poi usare il metodo listFiles(FileFilter) di File

Correzione: ovviamente File.separator

 FileFilter e poi usare il metodo listFiles(FileFilter) di File
Anche secondo me potevi risolvere molto più semplicemente utilizzando:
       PatternFilenameFilter filter = new
PatternFilenameFilter("*.zip");
       File[] zipFiles = directory.listFiles(filter);
...e ottieni un array contenente i tuoi files .zip
Ciao
Francesca