advertisement
javaboutique
Search Tips
Articles  |   Tutorials  |   Reviews  |   Tools  |   by Category  |   by Date  |   by Name  |   Submit  |   Source  |   Forums  |  
javaboutique
Browse DevX


Partners & Affiliates











advertisement


Tutorials : Working with files and directories in Java :
Contents
Working with files and directories in Java
The MyDir class
A directory structure for testing
Now for some HTML output
Showing XML in Internet Explorer

A directory structure for testing

For testing our programs we need a simple directory structure, with a few files and a few directories. Something along the lines of this:

- Figure 1 -

Here we have two files in "Dir-A", and one in each of the other two directories. If we run "Test1" above with the parameter "c:\Dir-A" we get this output:

Dir: c:\Dir-A
Dir: c:\Dir-A\Dir-B
Dir: c:\Dir-A\Dir-B\Dir-C
File: c:\Dir-A\Dir-B\Dir-C\File C.txt
File: c:\Dir-A\Dir-B\File B.txt
File: c:\Dir-A\File A1.txt
File: c:\Dir-A\File A2.txt

The output seems to be correct, but is of course not as nice as the graphical result in Figure 1.

Let's stop for a while and consider what could be improved in the current solution. First of all the output from the "list" method could be more readable, maybe by using some kind of indentation like in the graphical view. This could be achieved by adding a "level" parameter to the "list" method which is increased by one for every recursive call to "list". We could then indent each line for example 2 times "level" spaces. At the same time we could omit the path value. This would give this output:

Dir: Dir-A
  Dir: Dir-B
    Dir: Dir-C
      File: File C.txt
    File: File B.txt
  File: File A1.txt
  File: File A2.txt

Much better, but why tie up the solution to delivering the output only to System.out? We could have a much more generic solution if we define a couple of methods that contain the implementation of the output formatting and have them store the output in a member variable in the class. A get-method can be used to retrieve the final, formatted string.

Coding a more general solution

I'll sketch this solution here (the new code is marked with bold):

public class MyFileStructure{ 
  private String dirname;
  private MyDir mdir;
  protected String result;

public String getResult() {
    return result;
  }

. . . 
  
  /*
  * Display the name of the file on System.out   
  */
  protected void outFile(MyFile f, int level) {
    String name = f.getName();
    result += repeat(" ",2*level) + "File: " + name + "\n";
  }  
  
  /*
  * Display the name of the directory on System.out
  */
  protected void outDir(MyDir d, int level) {
    String name = d.getName();
    result += repeat(" ",2*level) + "Dir: " + name + "\n";
  }  
  
  /*
  * Close display of the directory 
  */
  protected void outEndDir() {
  }  
  
  public void list() {
    if (mdir == null) {
      System.out.println("Not a valid directory");
      return;
    }  
    result = "";
    outDir(mdir, 0);
    list(mdir, 0);
    outEndDir();
  }
  
  private void list(MyDir m, int level) {
    level++;
    Vector md = m.getDirs();
    for (int i = 0; i < md.size(); i++) {
      MyDir d = (MyDir)md.elementAt(i);
      outDir(d, level);
      list(d, level); // recursive call
      outEndDir();
    }  
    Vector mf = m.getFiles();
    for (int i = 0; i < mf.size(); i++) {
      MyFile f = (MyFile)mf.elementAt(i);
      outFile(f,level); 
    }  
  }  
 
}

The complete MyFileStructure also includes a utility method "repeat".

The test program will now have to write the results to System.out, so we must add this line to the program "Test1":

System.out.println(mf.getResult()); 

How to Add Java Applets to Your Site

New on the Java Boutique:

New Review:

Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling API boasts simplicity, ease-of-integration, a well-rounded feature set, and it's free!

New Applet:

Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA sequences into three useful formats.

Elsewhere on internet.com:

WebDeveloper Java
Lots of Java information on webdeveloper.com

WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.

ScriptSearch Java
Hundreds of free Java code files to download.

jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.

 Avaya Developer Showcase
 MSDN Spotlight
 PHP for Windows Showcase
XML error: undefined entity at line 34
advertisement
Receive Articles via our XML/RSS feed
Receive Articles via our XML/RSS feed

JavaBytes
Internet Cyclone
This powerful, easy-to-use, internet optimizer is for Windows 95, 98, ME, NT, 2000 and XP. It's designed to automatically optimize your Windows settings, boosting your Internet connection up to 200%.

IBM Brings Developers Into the Cloud
Apache at 10: You Can't Buy Us
Microsoft's CodePlex Foundation Moving Forward
Apple Claims 100,000 Apps, Google Analyzes Them
Nokia Latest to Play Opera Mobile 10 Browser
PayPal Opens Up Payment Platform to Devs
Ubuntu Linux 9.10 'Karmic Koala' Starts Its Climb
IBM Links Rational Developer Tools, Tivoli Apps
Libraries Give Vista Apps a Windows 7 Look
Ubuntu: The 'Default Alternative' to Windows?

Delivering Web-based Embedded Fonts in CSS 3
Adobe Helps PHP Developers Create Rich Internet Applications
Java Developers Finding a Home at Adobe Flex
Virtualization Delivers a Dynamic Infrastructure
Consuming XML Web Services in iPhone Applications
Build a More Agile Business with IBM
POJO-Based Solutions for LDAP Access: One Good, One Better
IBM Offers Enhanced Measurement and Management for Energy Usage
IBM Helps Transformation to an Information-Based Enterprise
Top Five Touch UI-Related Design Guidelines

Advertising Info  |   Member Services  |   Contact Us  |   Help  |   Feedback  |   Site Map  |   Network Map  |   About

internet.commediabistro.comJusttechjobs.comGraphics.com

Search:

WebMediaBrands Corporate Info

Legal Notices, Licensing, Reprints, Permissions, Privacy Policy.
Advertise | Newsletters | Shopping | E-mail Offers | Freelance Jobs