使用JAVA运行定义数量的文件
我有一个包含100个文件夹的目录。 我想从该目录中随机选择10个文件并进行处理使用JAVA运行定义数量的文件,java,java-8,Java,Java 8,我有一个包含100个文件夹的目录。 我想从该目录中随机选择10个文件并进行处理 static File repertoire = new File("path"); static File[] files = repertoire.listFiles(); for (File file : files) { if (file.isDirectory()) { Runtime.getRuntime().exec("cmd.exe /c sta
static File repertoire = new File("path");
static File[] files = repertoire.listFiles();
for (File file : files) {
if (file.isDirectory()) {
Runtime.getRuntime().exec("cmd.exe /c start "+ file.getAbsolutePath()+"\\scriptSh.sh");}
}
}
}
我希望我的代码只在我的目录下的10个文件上运行,而不是在所有文件上运行。
请提供任何帮助。静态文件目录=新文件(“路径”);
static File repertoire = new File("path");
static File[] files = repertoire.listFiles();
List<File> directories = new ArrayList<>();
for (File file : files) {
if (file.isDirectory()) {
directories.add(file);
}
}
Random rand = new Random();
for(int i=0;i<10;i++){
File file randomElement = directories.get(rand.nextInt(directories.size()));
Runtime.getRuntime().exec("cmd.exe /c start "+ file.getAbsolutePath()+"\\scriptSh.sh");
}
静态文件[]文件=repertoire.listFiles();
列表目录=新的ArrayList();
用于(文件:文件){
if(file.isDirectory()){
目录。添加(文件);
}
}
Random rand=新的Random();
对于(int i=0;iyq)来说,您的Q是令人困惑的。所以您想从主目录中的100个文件夹中随机选取10个文件?List files=Arrays.stream(repertoire.listFiles()).filter(file->file.isDirectory()).collect(Collectors.toList());Collections.shuffle(files);files.stream().limit(10).forEach(文件->Runtime.getRuntime().exec(“cmd.exe/c start”+文件.getAbsolutePath()+“\\scriptSh.sh”));
在代码中放置static
毫无意义。如果多个实例使用同一个random实例,则会出现性能问题。因此,您可以使用ThreadLocalRandom
,它会为每个线程创建一个随机实例。确切地说,我不想多次运行同一个scrip。每个脚本都应该运行一次。它工作正常,但我每次从列表中删除运行的脚本,以便每次运行不同的脚本。