Получение файла из других директорий

33
3
6
У меня есть так называемая папка Load, в ней содержаться дополнительные папки preLoad, Load, postLoad. И из этих папок мне надо получать допустим файлы формата .obj, но при этом, указывая только директорию Load.
 
Как-то не особо получается реализовать.
Как выглядит код:
    ModelMap.load(load + "models");

    public static void load(String s) {
        res = s;
        File f = new File(s);
        LoadModel thread = new LoadModel(f);
        thread.setDaemon(true);
        thread.setName("Load Models thread");
        thread.start();
    }

        @Override
        public void run() {
            try {
                for (File file : this.fileDouble.listFiles()) {
                    String name = file.getName();
                    if (!name.endsWith(".sss"))
                        continue;
                    name = name.substring(0, name.length() - 4);
                    this.modelFile = new File(res + File.separator + name + ".sss");
                    FileInputStream is = new FileInputStream(this.modelFile);
                    byte[] bytes = IOUtils.toByteArray((InputStream) is);
                    ...
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

Как я пытаюсь реализовать, одна из уже тысячи попыток:
        List<String> result = null;
        try (Stream<Path> walk = Files.walk(Paths.get(load + "models"))) {

            result = walk.filter(Files::isDirectory).map(x -> x.toString()).collect(Collectors.toList());

            
            
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
        
        for(int i = 0; i < result.size(); i++) {
            ModelMap.load("" + result.get(i));
        }
 
Не складывай строки в путях (Path), там есть метод resolve (ты можешь пропустить слэш, а метод всё разрулит)
А вообще, у тебя не понятно, что в коде не так.
 
try (Stream<Path> walk = Files.walk(Paths.get(load + "models").resolve(load + "models"))) {

Java:
[22:13:52] [Client thread/INFO] [STDOUT]: [corejz.b.proxy.ClientProxy:preInit:77]: [C:\b\eclipse\res\models, C:\b\eclipse\res\models\deco, C:\b\eclipse\res\models\items, C:\b\eclipse\res\models\vehicle]
[22:13:52] [Load Models thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: java.io.FileNotFoundException: C:\b\eclipse\res\models\vehicle\armor.sss (Не удается найти указанный файл)
[22:13:52] [Load Models thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:     at java.io.FileInputStream.open0(Native Method)
[22:13:52] [Load Models thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:     at java.io.FileInputStream.open(Unknown Source)
[22:13:52] [Load Models thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:     at java.io.FileInputStream.<init>(Unknown Source)
[22:13:52] [Load Models thread/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]:     at corejz.b.loader.model.ModelMap$LoadModel.run(ModelMap.java:77)
 
Тебе вообще try тут не нужен, если что
Ну и ошибка вроде как читаемая. В чем трабл?
 
Я вообще не соображаю, что не так:
        this.modelFile = new File(res + File.separator + name + ".sss")
//ругается на эту строчку FileInputStream is = new FileInputStream(this.modelFile);
 
Назад
Сверху