From 626c5143737cdb6d4d1b932e86be9ad26a916f4d Mon Sep 17 00:00:00 2001 From: Joel Dice Date: Tue, 4 Aug 2009 17:59:07 -0600 Subject: [PATCH] add listFiles and isFile methods to java.io.File --- classpath/java-io.cpp | 15 +++++++++++++++ classpath/java/io/File.java | 19 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/classpath/java-io.cpp b/classpath/java-io.cpp index 1bf1a04fec..9fbf2087bb 100644 --- a/classpath/java-io.cpp +++ b/classpath/java-io.cpp @@ -305,6 +305,21 @@ Java_java_io_File_isDirectory(JNIEnv* e, jclass, jstring path) } } +extern "C" JNIEXPORT jboolean JNICALL +Java_java_io_File_isFile(JNIEnv* e, jclass, jstring path) +{ + const char* chars = e->GetStringUTFChars(path, 0); + if (chars) { + STRUCT_STAT s; + int r = STAT(chars, &s); + bool v = (r == 0 and S_ISREG(s.st_mode)); + e->ReleaseStringUTFChars(path, chars); + return v; + } else { + return false; + } +} + extern "C" JNIEXPORT jboolean JNICALL Java_java_io_File_exists(JNIEnv* e, jclass, jstring path) { diff --git a/classpath/java/io/File.java b/classpath/java/io/File.java index 7308eb4872..48c8078aed 100644 --- a/classpath/java/io/File.java +++ b/classpath/java/io/File.java @@ -41,6 +41,12 @@ public class File { return isDirectory(path); } + private static native boolean isFile(String path); + + public boolean isFile() { + return isFile(path); + } + public String getName() { int index = path.lastIndexOf(FileSeparator); if (index >= 0) { @@ -141,6 +147,19 @@ public class File { return mkdir(); } + public File[] listFiles() { + return listFiles(null); + } + + public File[] listFiles(FilenameFilter filter) { + String[] list = list(filter); + File[] result = new File[list.length]; + for (int i = 0; i < list.length; ++i) { + result[i] = new File(this, list[i]); + } + return result; + } + public String[] list() { return list(null); }