Speziellen Dateipfad bekommen

paul9

Mitglied
Guten Tag zusammen 🙂

Ich möchte in meinen Programm etwas als "ORDERNAME/DATEI.txt" setzen, wobei eben ORDNERNAME der entsprechende Ordnername der Textdatei DATEI.txt ist.
Ich hab es jetzt mal so gelöst:
Java:
String nameToSet = templatesFolder.getName()+"/"+txtFiles.getName();
Wobei templatesFolder mein Folder und txtFiles eine Textdatei des Folders ist, welche ich in einer for-Schleife durchlaufe.
Dann gibt es das gewünschte Ergebnis:
> templates/template2.txt
Aber wie Ihr sicherlich seht ist das sehr hässlich und funktioniert eben nicht für Windows o.ä. da hier das "/" ein "\" ist...

Hat jemand eine bessere Idee? 🙂
Eigentlich braucht ihr die Methode nicht, aber für alle Fälle ist sie hier mal:
Java:
    private void loadAllCuttingTemplates() {
        String target_dir = "/Users/username/Downloads/projectname/templates";
    
        File templatesFolder = new File(target_dir);
        File[] files = templatesFolder.listFiles();
        for(File txtFiles : files) {
            if(txtFiles.isFile() && txtFiles.getName().endsWith(".txt")) {
                try {
                    String nameToSet = templatesFolder.getName()+"/"+txtFiles.getName();  //TODO
                    CuttingTemplate ausgelesenesCuttingTemp = CuttingTemplate.parseCuttingTemplate(readAllLines(txtFiles.getAbsolutePath()));
                    ausgelesenesCuttingTemp.setName(nameToSet);     
                    templates.add(ausgelesenesCuttingTemp);   
                } catch (IOException e) { 
                    System.err.println("Unable to load file: "+txtFiles.getName() +" !");
                }
            }       
        }

    }
 
Da gibt es zig Möglichkeiten. Eine davon:

Java:
String nameToSet = new File(templatesFolder, txtFiles.getName()).getPath();
 
Hey @mihe7 das hab ich so ähnlich auch schon gehabt aber dann bekomm ich den gesamten Dateipfad:
/Users/username/Downloads/projectname/templates/template1.txt
obwohl ich hieraus nur das will:
/templates/template1.txt
LG!
 
Ach so, das liegt nur daran, dass Dein templatesFolder absolut angegeben und somit nicht der Zielordner ist.
Java:
File relativeDestinationFolder = new File(templatesFolder.getName());
File relativeDestinationFile = new File(relativeDestinationFolder, txtFiles.getName());
Ein relativeDestinationFile.getPath() würde dann etwas wie "templates/template1.txt" liefern. Um einen absoluten Pfad zu erhalten, müsstest Du den relativen Pfad gegen einen absoluten Pfad auflösen.
 

Zurück
Oben