Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
swdev:java:files:file_routines [2017/09/29 16:45]
smayr
swdev:java:files:file_routines [2018/03/12 08:16] (current)
smayr
Line 47: Line 47:
 References: References:
   * [[https://stackoverflow.com/questions/1844688/read-all-files-in-a-folder]]   * [[https://stackoverflow.com/questions/1844688/read-all-files-in-a-folder]]
 +
 +=== Method 4 ===
 +<code java>
 +    private void mnuOpenActionPerformed(java.awt.event.ActionEvent evt) {                                        
 +        try {
 +            // Read text file
 +            Path pth = Paths.get(System.getProperty("user.dir") + "/src/com/acme/myproj/data/", "customer.txt");
 +            
 +            Stream<String> data = Files.lines(pth);
 +            List<String> asList = data.collect(Collectors.toList());
 +            System.out.println("Working Directory = " + System.getProperty("user.dir"));
 +            System.out.println(asList);
 +            
 +            DefaultListModel<String> lst = new DefaultListModel();
 +            //for(int i=0; i< asList.size(); i++) {
 +            //    String str = asList.get(i);
 +            //    lst.addElement(str);
 +            //}
 +            for(String str: asList) {
 +                lst.addElement(str);
 +            }
 +            lstAdminRegions.setModel(lst);
 +        } catch (IOException ex) {
 +            Logger.getLogger(frmMain.class.getName()).log(Level.SEVERE, null, ex);
 +        }
 +    }
 +</code>    
 +
 +== Example ==
 +<code java>
 +/*
 + * To change this license header, choose License Headers in Project Properties.
 + * To change this template file, choose Tools | Templates
 + * and open the template in the editor.
 + */
 +package com.voirtech.sdayearbook;
 +
 +import java.io.File;
 +import javax.swing.JTree;
 +import javax.swing.tree.DefaultMutableTreeNode;
 +import javax.swing.tree.DefaultTreeModel;
 +
 +/**
 + *
 + * @author mayr
 + */
 +public class FileUtils 
 +{
 +    /*
 +     * Usage: 
 +        try {
 +            treeOrgTypes.setModel(new DefaultTreeModel(new DefaultMutableTreeNode("C:\\WAMP")));  // clear existing model
 +            FileUtils.scanAndLoadDirectory("C:\\WAMP", treeOrgTypes);
 +        } catch (Exception exc) {
 +          // Handle exception
 +        }
 +     */
 +    public static void scanAndLoadDirectory(String location, JTree tree) throws InterruptedException 
 +    {    
 +        // Creates a file with the location filename
 +        //String location ="C:\\Users\\John Doe\\Documents";
 +        File currentDir = new File(location);
 +
 +        // Get root of tree model
 +        DefaultTreeModel modelTree  = (DefaultTreeModel)tree.getModel();
 +        DefaultMutableTreeNode root = (DefaultMutableTreeNode) modelTree.getRoot();
 +        
 +        displayDirectoryContents(currentDir, modelTree, root);
 +    }
 +    
 +    public static void displayDirectoryContents(File dir, DefaultTreeModel model, DefaultMutableTreeNode curRoot) throws InterruptedException 
 +    {   
 +        File[] files = dir.listFiles();  // Creates array of file type for all the files found
 +
 +        for (File file : files) {
 +            if (file == null) {
 +                System.out.println("NULL directory found");
 +                continue;
 +            }
 +            if (file.isDirectory()) {
 +                //---------------------------
 +                // File is a Directory
 +                //---------------------------
 +               if (file.listFiles() == null) {
 +                    // Skip null files
 +                    continue;
 +                }
 +
 +                // Adds a new Directory node to tree root
 +                DefaultMutableTreeNode newdir = new DefaultMutableTreeNode(file.getName());
 +                curRoot.add(newdir);
 +
 +                // Refresh the model to show changes
 +                model.reload();
 +
 +                // Recursively calls the function again to explore the contents folder
 +                displayDirectoryContents(file, model, newdir);
 +                
 +            } else {  
 +                //---------------------------
 +                // File is not a directory
 +                //---------------------------
 +                // Inserts a node newfile under selected node which is the root
 +                DefaultMutableTreeNode selectednode = curRoot;
 +                DefaultMutableTreeNode newfile = new DefaultMutableTreeNode(file.getName());
 +                model.insertNodeInto(newfile, selectednode, selectednode.getChildCount());
 +
 +                // Refresh the model to show the changes
 +                model.reload();
 +            }
 +        }    
 +    }
 +}
 +</code>