Start Search Contents Index Links About
NetscapeBookmarks.java
/*
 * Author: Havard Rast Blok
 * E-mail: 
 * Web   : www.rememberjava.com
 */


import java.io.*;
import javax.swing.*;
import javax.swing.tree.*;

/**
 * Class for parsing and showing the Netscape bookmarks
 */
public class NetscapeBookmarks extends JFrame
{
  String folderMark="<H3";
  String folderMark2="\">";
  String folderMark3="</H3>";
  String urlMark="<A HREF=\"";
  String urlMark2="\"";
  String urlMark3="\">";
  String urlMark4="</A>";
  String endMark="</DL>";

  public NetscapeBookmarks(String fileName)
  {
    DefaultMutableTreeNode root;
    DefaultTreeModel treeModel;
    JTree tree;

    BufferedReader in;

    root = new DefaultMutableTreeNode("Bookmarks");

    try
    {
      //open file for reading
      in = new BufferedReadernew FileReaderfileName ) );

      //traverse the file
      addNodein, root );

      in.close();
    }
    catchIOException e )
    {
      System.out.println("Error reading file: "+e);
    }

    treeModel = new DefaultTreeModel(root);
    tree = new JTreetreeModel );
   
    getContentPane().addtree );

    setDefaultCloseOperationJFrame.EXIT_ON_CLOSE );
    pack();
    show();

  }

  private void addNodeBufferedReader in, DefaultMutableTreeNode root throws IOException
  {
    DefaultMutableTreeNode node;
    String name, link;
    String line;
    boolean done;
    int idx1, idx2, idx3, idx4;

    //read and parse the file
    done = false;
    while( (line = in.readLine()) != null && !done )
    {
      ifline.indexOffolderMark != -)
      {
  //get the name of this record
  idx2 = line.indexOffolderMark2 );
  idx3 = line.indexOffolderMark3 );
  name = line.substringfolderMark2.length() + idx2, idx3 );

  node = new DefaultMutableTreeNodename );
  root.addnode );
  //RECURSIVE CALL
  addNodein, node );
      }
      else if( (idx1 = line.indexOfurlMark )) != -)
      {
  //get the url and name of this record
  idx2 = line.indexOfurlMark2, urlMark.length() + idx1 );
  idx3 = line.indexOfurlMark3, urlMark2.length() + idx2 );
  idx4 = line.indexOfurlMark4, urlMark3.length() + idx3 );
  
  link = line.substringurlMark.length() + idx1, idx2 );
  name = line.substringurlMark3.length() + idx3, idx4 );

  //add record to tree
  node = new DefaultMutableTreeNodename+" ("+link+")" );
  root.addnode );
      }
      else ifline.indexOfendMark != -)
      {
  //backtrack to last recursive call
  done = true;
      }
    }
  }

  public static void mainString args[] )
  {
    ifargs.length < )
    {
      System.out.println("Usage: java NetscapeBookmarks <Netscape bookmarks file>");
      System.exit(1);
    }

    new NetscapeBookmarks(args[0]);
  }
}
    


site: Håvard Rast Blok
mail:
updated: 27 July 2007