Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java,从文件夹位置提取列表文件名的最节省资源的方法是什么_Java_File_Memory_Io - Fatal编程技术网

使用java,从文件夹位置提取列表文件名的最节省资源的方法是什么

使用java,从文件夹位置提取列表文件名的最节省资源的方法是什么,java,file,memory,io,Java,File,Memory,Io,使用Java,从文件夹位置提取文件名“列表”的最节省资源的方法是什么。目前,我正在使用以下代码:- File[] files = new File(folderLocation).listFiles(); 在遍历文件数组并仅转储文件名之前,请先将其转储到应用程序使用的哈希中。因此,请记住,我只需要文件名,有一种更节省内存的方法可以做到这一点 编辑: 我没有使用Java7 实际上,我没有遇到内存错误,但我开发的方法运行时间太长(20分钟),对于我正在开发的应用程序来说,这

使用Java,从文件夹位置提取文件名“列表”的最节省资源的方法是什么。目前,我正在使用以下代码:-

           File[] files = new File(folderLocation).listFiles();
在遍历文件数组并仅转储文件名之前,请先将其转储到应用程序使用的哈希中。因此,请记住,我只需要文件名,有一种更节省内存的方法可以做到这一点

编辑:

  • 我没有使用Java7
  • 实际上,我没有遇到内存错误,但我开发的方法运行时间太长(20分钟),对于我正在开发的应用程序来说,这不是一个现实的选择

使用Java 7+有:

final Path dir = Paths.get(folderLocation);

final List<String> names = new ArrayList<>();

try (
    final DirectoryStream<Path> dirstream
        = Files.newDirectoryStream(dir);
) {
    for (final Path entry: dirstream)
        list.add(entry.getFileName());
}
final Path dir=Path.get(folderLocation);
最终列表名称=新的ArrayList();
试一试(
最终目录流dirstream
=Files.newDirectoryStream(dir);
) {
for(最终路径条目:dirstream)
list.add(entry.getFileName());
}

另外,使用Java 7+还有:

final Path dir = Paths.get(folderLocation);

final List<String> names = new ArrayList<>();

try (
    final DirectoryStream<Path> dirstream
        = Files.newDirectoryStream(dir);
) {
    for (final Path entry: dirstream)
        list.add(entry.getFileName());
}
final Path dir=Path.get(folderLocation);
最终列表名称=新的ArrayList();
试一试(
最终目录流dirstream
=Files.newDirectoryStream(dir);
) {
for(最终路径条目:dirstream)
list.add(entry.getFileName());
}

另外,使用Java 7+还有:

final Path dir = Paths.get(folderLocation);

final List<String> names = new ArrayList<>();

try (
    final DirectoryStream<Path> dirstream
        = Files.newDirectoryStream(dir);
) {
    for (final Path entry: dirstream)
        list.add(entry.getFileName());
}
final Path dir=Path.get(folderLocation);
最终列表名称=新的ArrayList();
试一试(
最终目录流dirstream
=Files.newDirectoryStream(dir);
) {
for(最终路径条目:dirstream)
list.add(entry.getFileName());
}

另外,使用Java 7+还有:

final Path dir = Paths.get(folderLocation);

final List<String> names = new ArrayList<>();

try (
    final DirectoryStream<Path> dirstream
        = Files.newDirectoryStream(dir);
) {
    for (final Path entry: dirstream)
        list.add(entry.getFileName());
}
final Path dir=Path.get(folderLocation);
最终列表名称=新的ArrayList();
试一试(
最终目录流dirstream
=Files.newDirectoryStream(dir);
) {
for(最终路径条目:dirstream)
list.add(entry.getFileName());
}
还有,嗯,你可以查一下

javadoc中提到了它

路径getFileName()
返回此路径表示为路径对象的文件或目录的名称

你可以查一下

javadoc中提到了它

路径getFileName()
返回此路径表示为路径对象的文件或目录的名称

你可以查一下

javadoc中提到了它

路径getFileName()
返回此路径表示为路径对象的文件或目录的名称

你可以查一下

javadoc中提到了它

路径getFileName()
返回此路径表示为路径对象的文件或目录的名称


您可以使用返回字符串[]的
(新文件(folderLocation)).list()
。每个字符串都是路径+分隔符+文件名。您可以从此字符串中提取文件名。

您可以使用返回字符串[]的
(新文件(folderLocation)).list()
。每个字符串都是路径+分隔符+文件名。您可以从此字符串中提取文件名。

您可以使用返回字符串[]的
(新文件(folderLocation)).list()
。每个字符串都是路径+分隔符+文件名。您可以从此字符串中提取文件名。

您可以使用返回字符串[]的
(新文件(folderLocation)).list()
。每个字符串都是路径+分隔符+文件名。您可以从该字符串中提取文件名。

是否需要区分文件和目录。如果没有,您可以使用File中的list()函数返回一个字符串数组,该字符串命名由该抽象路径名表示的目录中的文件和目录。然后,您可以轻松地使用该列表构造哈希集。比如说,

String[] files = new File(folderLocation).list();
Set<String> mySet = new HashSet<String>(Arrays.asList(files));
String[]files=新文件(folderLocation).list();
Set mySet=newhashset(Arrays.asList(files));

还有一个list(FilenameFilter)函数,它接受文件名过滤器并返回字符串名列表。但是,它不允许您根据文件/目录进行筛选。

您需要区分文件和目录吗。如果没有,您可以使用File中的list()函数返回一个字符串数组,该字符串命名由该抽象路径名表示的目录中的文件和目录。然后,您可以轻松地使用该列表构造哈希集。比如说,

String[] files = new File(folderLocation).list();
Set<String> mySet = new HashSet<String>(Arrays.asList(files));
String[]files=新文件(folderLocation).list();
Set mySet=newhashset(Arrays.asList(files));

还有一个list(FilenameFilter)函数,它接受文件名过滤器并返回字符串名列表。但是,它不允许您根据文件/目录进行筛选。

您需要区分文件和目录吗。如果没有,您可以使用File中的list()函数返回一个字符串数组,该字符串命名由该抽象路径名表示的目录中的文件和目录。然后,您可以轻松地使用该列表构造哈希集。比如说,

String[] files = new File(folderLocation).list();
Set<String> mySet = new HashSet<String>(Arrays.asList(files));
String[]files=新文件(folderLocation).list();
Set mySet=newhashset(Arrays.asList(files));

还有一个list(FilenameFilter)函数,它接受文件名过滤器并返回字符串名列表。但是,它不允许您根据文件/目录进行筛选。

您需要区分文件和目录吗。如果没有,您可以使用File中的list()函数返回一个字符串数组,该字符串命名由该抽象路径名表示的目录中的文件和目录。然后,您可以轻松地使用该列表构造哈希集。比如说,

String[] files = new File(folderLocation).list();
Set<String> mySet = new HashSet<String>(Arrays.asList(files));
String[]files=新文件(folderLocation).list();
Set mySet=newhashset(Arrays.asList(files));

还有一个list(FilenameFilter)函数,它接受文件名过滤器并返回字符串名列表。但是,它不允许您根据文件/目录进行筛选。

我认为这是唯一的方法。您可以查看在列出文件时是否确实内存不足?我认为这是唯一的方法。您可以查看是否确实内存不足