Filelist Ausgabe (nur den letzten teil)

Scar47

Aktives Mitglied
HEy leute,
ich habe folgendes problem.
ich möchte eine filelist ausgeben (erstmal inne konsole, den rest schaffe ich dann auchselber 😀), mein problem ist nun, das ich es iwie nur schaffe den ganzen pfand aus zu geben. ich möchte aber nur den letzten ordner ausgeben.

Die methode sieht so aus :
Java:
 	 int returnVal = fc.showOpenDialog(GUI.this);

   	 fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
     if (returnVal == JFileChooser.APPROVE_OPTION) {  	  
          File file1 = fc.getSelectedFile();
            System.out.println("Opening: " + file1.getName() + ".");
              	File[] fileliste = file1.listFiles();
      	    if (fileliste != null) {
      	      System.out.println("probe");
      	      for (File file : fileliste) {
      	        System.out.println(file);
      	      }
      	    } else {
      	      System.out.println(file1.getName() + " is not a directory");
      	    }
           } else {
       	 System.out.println("Open command cancelled by user.");
        }
 }

in der konsole wird wmir folgendes ausegeben:
Opening: Test.
probe
G:\Test\test 1
G:\Test\test 2
G:\Test\test 3

ich möchte aber nur :
test 1
test 2
test 3
haben. ich habe es schon mit substrings versucht, und dann \ eingegeben, der \ wird jedoch nur als fehler erkannt -.-
bitte hilfe mfg Scar
 
Zuletzt bearbeitet:
Hallo Scar47,

statt den Quote-Tags solltest Du Java verwenden (siehe auch den roten Hinweis wenn Du einen Beitrag schreibst ;-)).

Das Zeichen "\" leitet ein Steuerzeichen ein, z.B. "\n" für ein Linebreak oder "\t" für den Tabulator. Möchtest Du das Zeichen "\" verwenden, musst Du es escapen, einfach "\\" verwenden.
Da Du aber mit Java arbeitest solltest Du berücksichtigen, dass ein Backslash in Windows zwar ein Separator ist, die Anwendung aber auch in einem Unix-System laufen könnte (da ist ein Slash "/" das Trennzeichen). Besser ist es deshalb die Variable File.separator zu verwenden. Diese Variable wird automatisch mit dem korrekten Trennzeichen belegt.
 
Es sollen ja nur die Namen der Ordner ausgegeben werden, dann sollte da auch ein getName hin.

[Java]
if (fileliste != null) {
System.out.println("probe");
for (File file : fileliste) {
System.out.println(file.getName());
}
}
[/Java]
 
Zuletzt bearbeitet:
Ich hab es mal mit einem ordner auf dem Desktop getestet und ich bekomme genau diese Ausgabe.

[Java]
import java.io.File;
import javax.swing.*;


public class FileChooser {

JFileChooser fileChooser;
int returnVal;

public FileChooser() {

fileChooser = new JFileChooser();
fileChooserConfig();
}

private void fileChooserConfig() {

fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
returnVal = fileChooser.showOpenDialog(null);
}

private void listDirectorys() {

File file1 = fileChooser.getSelectedFile();
System.out.println("Opening: " + file1.getName() + ".");
File[] fileliste = file1.listFiles();

if (fileliste != null) {
System.out.println("probe");

for (File file : fileliste) {
System.out.println(file.getName());
}
}
}

public static void main(String[] args) {
FileChooser fc = new FileChooser();
fc.listDirectorys();
}

}
[/Java]

Ausgabe:

Opening: Test.
probe
Test1
Test2
Test3
 
Java:
    if (fileliste != null) {
      	      System.out.println("probe");
      	      for (File file : fileliste) {
      	    	  
      	    	  verzeichnishilfe=file.toString();
      	    	  for(int i=0; i<file.length();i++){
      	    		
      	    		   if(verzeichnishilfe.substring(i, i+1)=="\\"){
      	    			   verzeichnishilfe.substring(i);
      	    			   }
      	    	  }  
      	        System.out.println(verzeichnishilfe);
      	      }
      	    } else {
      	      System.out.println(file1.getName() + " is not a directory");
      	    }
sry iwie stell ich mich gerade wieder futbar blöd an -.-
so funktioniert das nicht und ich weiß auch nicht wie das so genau gehen soll..


-> wichtig ist auch, das der die ordner die der mir ausgibt(bzw ausgeben soll) aus mehreren wörtern besteht, kann man den seperator dann noch nutzen?
 
Ich verstehe nicht wieso das getName nicht funktionieren soll.
Hier sonst noch ne andere Möglichkeit.

[Java]
for (File file : fileliste) {
String[] subDirs = file.toString().split(Pattern.quote(System.getProperty("file.separator")));
System.out.println(subDirs[subDirs.length - 1]);
}
[/Java]

Oder mit substring

[Java]
for (File file : fileliste) {
int subNum = file.toString().lastIndexOf(System.getProperty("file.separator"));
String subDirs = file.toString().substring(subNum).replace(System.getProperty("file.separator"), "");
System.out.println(subDirs);
}
[/Java]
 
Zuletzt bearbeitet:
ich habe das obere mal probiert. das funktoniert 🙂 danke 🙂
ka wieso das letztes mal mit dem namen nicht ging..keinen plan -.-
naja auf jeden fall herzlichen dank jetzt kannich endlich weiter machen 😀
:toll:
 

Zurück
Oben