= File Routines =
== Read File List ==
=== Method 1 ===
import java.io.File;
public void listFilesForFolder(final File folder) {
for (final File fileEntry : folder.listFiles()) {
if (fileEntry.isDirectory()) {
listFilesForFolder(fileEntry);
} else {
System.out.println(fileEntry.getName());
}
}
}
=== Method 2 ===
In Java 8, using the ''Files.walk'' API:
final File folder = new File("/home/you/Desktop");
listFilesForFolder(folder);
Files.walk API is available from Java 8.
try (Stream paths = Files.walk(Paths.get("/home/you/Desktop"))) {
paths
.filter(Files::isRegularFile)
.forEach(System.out::println);
}
=== Method 3 ===
import java.io.File;
File folder = new File("/Users/you/folder/");
File[] listOfFiles = folder.listFiles();
for (File file : listOfFiles) {
if (file.isFile()) {
System.out.println(file.getName());
}
}
References:
* [[https://stackoverflow.com/questions/1844688/read-all-files-in-a-folder]]
=== Method 4 ===
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 data = Files.lines(pth);
List asList = data.collect(Collectors.toList());
System.out.println("Working Directory = " + System.getProperty("user.dir"));
System.out.println(asList);
DefaultListModel 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);
}
}
== Example ==
/*
* 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();
}
}
}
}