PDA

Visualizza la versione completa : [java] directory e files


wallrider
15-12-2003, 09:50
vorrei realizzare una classe che, data un path in input, visualizzi tutti i files e, ricorsivamente, le sottoDirectory.
Cioe', a dire il vero lo scriverei su un file html, ma questo e' il passo successivo

Mi raccomando, sono MOLTO principiante :bhò:

Angelo1974
15-12-2003, 13:03
Ciao ecco l'esempio + stupido che ho fatto; ovviamente lascio a te il compito di aggiustarlo.
Ciao
import java.io.*;
import javax.swing.JOptionPane;

public class DammiContenuto {

public static void main( String[] args ){

String path = JOptionPane.showInputDialog( null,"Inserisci il path", "Input path", JOptionPane.INFORMATION_MESSAGE );

if( ( path == null ) ||( path.equals( "" ) ) ){

JOptionPane.showMessageDialog( null,"Dovevi inserire un path", "Errore", JOptionPane.ERROR_MESSAGE );
System.exit( 0 );
}

File f = new File( path );
File[] contenuto = f.listFiles();


System.out.println( "###############################################" );
System.out.println( "Directories" );
System.out.println( "###############################################" );
for( int i = 0; i < contenuto.length; i++ ){

if( contenuto[i].isDirectory() ){

System.out.println( contenuto[i].getName() );
}
}

System.out.println( "###############################################" );
System.out.println( "Files" );
System.out.println( "###############################################" );
for( int i = 0; i < contenuto.length; i++ ){

if( contenuto[i].isFile() ){

System.out.println( contenuto[i].getName() );
}
}

System.out.println( "Fatto" );
System.exit( 1 );
}
}

Nosferatu
15-12-2003, 18:25
Originariamente inviato da wallrider
vorrei realizzare una classe che, data un path in input, visualizzi tutti i files e, ricorsivamente, le sottoDirectory.
Cioe', a dire il vero lo scriverei su un file html, ma questo e' il passo successivo

Mi raccomando, sono MOLTO principiante :bhò:
Beh, il passo difficoltoso da capire credo sarà il concetto di ricorsione, che non è stato preso in considerazione da Angelo.

wallrider
16-12-2003, 09:45
Originariamente inviato da Nosferatu
Beh, il passo difficoltoso da capire credo sarà il concetto di ricorsione, che non è stato preso in considerazione da Angelo.
credo che la ricorsione si possa implementare mettendo il corpo in un metodo statico piuttosto che nel main :stordita:

wallrider
16-12-2003, 09:51
Originariamente inviato da Angelo1974
Ciao ecco l'esempio + stupido che ho fatto; ovviamente lascio a te il compito di aggiustarlo.
Ciao
E' stupido forse ma e' proprio cio' che cercavo
GRAZZZZZ :metallica :ciauz: :metallica

Nosferatu
16-12-2003, 09:52
Originariamente inviato da wallrider
credo che la ricorsione si possa implementare mettendo il corpo in un metodo statico
...che richiama se stesso nella sua ultima riga con parametri opportunamente modificati in modo che converga.
Doppio :stordita: !!!

wallrider
16-12-2003, 10:46
si, pero' non funziona

import java.io.*;

public class DammiContenuto {
public static PrintWriter out = null;
public static void main( String[] args ){
ConsoleReader c=new ConsoleReader(System.in);
String path ;
do{
System.out.print("Path:'Z:\\altro'");
path="Z:\\altro";
//c.readLine();
}while(( path == null ) ||( path.equals( "" )));
try {
out = new PrintWriter(new BufferedWriter(new FileWriter("prova.html")));
out.println("<HTML>");
out.println("<HEAD>");
out.println("</HEAD>");
out.println("<BODY>");
out.println("<UL>");
out.println("<LI>");
mostra(path);
out.println("</LI>");
out.println("[/list]");
out.println("</BODY>");
out.println("</HTML>");
out.close();
}catch(IOException e) {
System.out.println(" IOException "+e);
}
}
public static void mostra(String path){
System.out.println("Mostro il contenuto di "+path);
File f = new File(path);
File[] contenuto = f.listFiles();
if(contenuto != null){
System.out.println("trovati "+contenuto.length+" oggetti dentro "+path);
out.println("<UL>");
for( int i = 0; i < contenuto.length; i++ ){
if( contenuto[i].isDirectory() ){
out.println("<LI>");
mostra( contenuto[i].getName() );
out.println("</LI>");
}
}
for( int i = 0; i < contenuto.length; i++ ){
if( contenuto[i].isFile() ){
out.println("<LI>"+contenuto[i].getName()+"</LI>");
}
}
out.println("[/list]");
}else
System.out.println(path +" non ha files");
}
}

dice sempre che contenuto e' null, cioe' alla riga 35 la guardia da' sempre false e va sempre alla riga 52

centro
16-12-2003, 14:40
Scusate ma in realtà volevo rispondere volevo al tread
[java] directory e files

sono agli inizi con java e ...sperando di non chiedere troppo... :quipy:
vorrei provare a chiedere se qualcuno di voi mi può dire che differenza esiste tra il modo di chiamare alcune classi...

nell'esempio di Angelo sopra...
chima due classi,
prima così:

String path = JOptionPane.showInputDialog(null,"Inserisci il path", "Input path", JOptionPane.INFORMATION_MESSAGE );


e poi un'altra così:

File f = new File(path );


(daltronde quest'ultimo è quello che conosco nella mia poca esperienza di studente...)

perchè esiste questa differenza....?? :bubu: :bubu:
Potete illuminarmi...??
Ciao

Johnny_Depp
16-12-2003, 14:56
Originariamente inviato da centro
Scusate ma in realtà volevo rispondere volevo al tread
[java] directory e files
magola maga magia ;)

centro
16-12-2003, 15:00
:D grazie...

Loading