27. maj 2003 - 21:51Der er
43 kommentarer og 1 løsning
dirTree. Kan ikke udskrive filerne i biblioteket
Jeg ville gerne have listet filerne i bibliotekerne i programmet. Men det går ikke rigtigt. Det er ikke noget problem at få konstateret at der er en fil i biblioteket. Men at få denne udskrevet kan jeg ikke.
Det er også underligt at der udskrives tre filer i sidste bibliotek. I hvert bibliotek er der én fil.
import java.io.*;
public class DirTree {
public static void main(String[] argv) { DirTree dt = new DirTree(); if (argv.length == 0) dt.doDir("f:\\hjemmeside" ); else for (int i = 0; i<argv.length; i++) dt.doDir(argv[i]); }
/** doDir - handle one filesystem object by name */ private void doDir(String s) { File f = new File(s); if (!f.exists()) { System.out.println(s + " does not exist"); return; } if (f.isFile()) doFile(f); else if (f.isDirectory()) { System.out.println("\n[:" + f.getName()+"]"); if( f !=null) System.out.println("ikke tom"); String objects[] = f.list(); for (int i=0; i<objects.length; i++) doDir(s + f.separator + objects[i]); } else System.err.println("Unknown: " + s); }
/** doFile - process one regular file. */ private static void doFile(File f) { System.out.println(" " + f.getName()); } }
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Jeg har lavet et testdirectory i c:\. Det hedder test. Under test ligger der test2. Under test2 ligger test3. Der ligger filer i test og test3. Jeg får listet nogle af filerne fra test under test3.
public class FileSystem extends File { // Constructor public FileSystem( String name ) { super( name ); }
// Output file name with indentation public void printName( int depth ) { for ( int i = 0; i < depth; i++ ) System.out.print( "\t" ); System.out.println( getName() ); }
// Public driver to list all files in directory public void listAll() { listAll( 0 ); }
// Recursive method to list all files in directory private void listAll( int depth ) { printName( depth );
if ( isDirectory() ) { String[] entries = list();
for ( int i = 0; i < entries.length; i++ ) { FileSystem child = new FileSystem( getPath() + separatorChar + entries[i] ); child.listAll( depth + 1 ); } } }
public long size() { long totalSize = length();
if ( isDirectory() ) { String[] entries = list(); for ( int i = 0; i < entries.length; i++ ) { FileSystem child = new FileSystem( getPath() + separatorChar + entries[i] ); totalSize += child.size(); } }
return totalSize; }
static public void main( String[] args ) { FileSystem f;
if ( args.length == 0 ) f = new FileSystem( "c:\\k" ); // brug . for current dir. else f = new FileSystem( args[0] );
Men kan også en sjov ting: Hvis du laver directory a\b\c\d så gør den ikke et directory færdigt Når den møder filer startende med 'b' går den til diretory B og fortsætter indtil den møder filer startende med 'c' så går den til diretory C osv.
Magoo20000. Det virker ikke helt... Der kommer ikke der korrekte liste frem (se udskriften for neden)
import java.io.File; import java.io.*;
public class FileSystem extends File { // Constructor public FileSystem( String name ) { super( name ); }
// Output file name with indentation public void printName( int depth ) { for ( int i = 0; i < depth; i++ ) System.out.print( "\t" ); System.out.println( getName() ); }
// Public driver to list all files in directory public void listAll() { listAll( 0 ); }
// Recursive method to list all files in directory private void listAll( int depth ) { printName( depth );
if ( isDirectory() ) { String[] entries = list();
for ( int i = 0; i < entries.length; i++ ) { FileSystem child = new FileSystem( getPath() + separatorChar + entries[i] ); child.listAll( depth + 1 ); } } }
public long size() { long totalSize = length();
if ( isDirectory() ) { String[] entries = list(); for ( int i = 0; i < entries.length; i++ ) { FileSystem child = new FileSystem( getPath() + separatorChar + entries[i] ); totalSize += child.size(); } }
return totalSize; }
static public void main( String[] args ) { FileSystem f;
if ( args.length == 0 ) f = new FileSystem( "f:\\hjemmeside" ); // brug . for current dir. else f = new FileSystem( args[0] );
Der er flere ting jeg ikke kan gennemskue. Først og fremmest mener jeg argumentet File f = new File("f://hjemmeside"); skal liste filer i dette dir. Men det bliver ikke gjort. En anden ting er "separator". Er det en metode? (som ligger i .io class'en).
Det er måske her arne_v at jeg ikke har fulgt enkelteheden. Jeg anvender UltraEdit som jeg også compilere med. Jeg prøver at finde ud af det med dos promten
Det virker helt perfekt arne_v. Men er process ikke et beskyttet ord i java. Det fremgår dog ikke af api sepcifikationen (jeg kan ikke finde det). Men er registreret som sådan i UltraEdit. Tak for hjælpen.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.