Dateien in einem Verzeichnis zählen

Status
Nicht offen für weitere Antworten.
M

miketronik

Gast
Hallo zusammen,

ich bin neu hier und und versuche mich seit 2 Wochen in Java. Ich kann Controller in Assembler programmieren aber mit Hochsprachen habe ich so meine Probleme.

Ich muß eine Anzahl Dateien in einem Verzeichnis Zählen um sie dann entsprechend zu verteilen. Es gibt ja die Klasse File mit der methode List, die kann man auch mit einem Filter versehen. Soweit die Theorie, aber die praxis hapert und dann die Frage gibt es sowas wie count oder so, kenne ich noch von Clipper. Also ich muss wissen wie viele TIF Dateien in einem Verzeichnis sind. Einen Verzeichniswähler habe ich schonmal ausprobiert. Da ist dann gleich die nächste Frage, kann ich dem Filechooser auch eine Startverzeichnis vorgeben?

Hier mein bisheriges Programm

Danke Mike

Code:
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.filechooser.*;

public class Faxverteiler extends JFrame implements ActionListener

{
 //Dateidialog erzeugen
 JFileChooser fc = new JFileChooser();

 //Knopf mit Grafiken erstellen
 JButton openButton  = new JButton("Verzeichnis öffnen...",
                       new ImageIcon("Open16.gif"));
 //Eingabeaufforderung mit Grafik erzeugen
 JLabel eingabezeile = new JLabel("Verzeichnis...  ",
                       new ImageIcon("triblue.gif"), SwingConstants.LEFT);
 //Eingabetextfeld erzeugen
 JTextField tf = new JTextField(25);
 //Panel zur Namenseingabe hinzufügen
 JPanel panel = new JPanel();        //panel ist ContentPane
 
 public File tmpfile = new File("");
 
  public Faxverteiler()
  {
   super("Fax - Verteiler");
   setDefaultCloseOperation(EXIT_ON_CLOSE);
   
   fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
   panel.add(eingabezeile);
   tf.setToolTipText("aktuelles Verzeichnis");
   tf.setText(tmpfile.getAbsolutePath());
   panel.add(tf);
   panel.add(openButton);
   openButton.addActionListener(this);
   //panel.setBorder(BorderFactory.createEtchedBorder());
   //getContentPane().add(panel, BorderLayout.NORTH);
   setContentPane(panel);
   
  }

  public void actionPerformed(ActionEvent ae)
  {
   //Handle open button action.

            int returnVal = fc.showOpenDialog(Faxverteiler.this);

            if (returnVal == JFileChooser.APPROVE_OPTION) {
                File file = fc.getSelectedFile();
                tf.setText(file.getAbsolutePath());
                
                
                
            } else {
                tf.setText("öffnen abgebrochen.");
            }
  }

   public static void main(String[] args)
  {

   Faxverteiler rahmen = new Faxverteiler();
   rahmen.setLocation(200, 300);
   rahmen.setSize(600,300);
   //rahmen.pack();
   rahmen.setVisible(true);
  }
}
[\code]
 
B

Beni

Gast
Anzahl Dateien: lass dir alle Dateien aufliesten, welche es gibt, und zähle sie dann:
Code:
File directory = ... // Das Verzeichnis, das betrachtet wird
String[] list = directory.list( deinFilter ); // nur gewissen Dateien
int count = list.length; // Die Anzahl gefundener Dateien ist nun in count

Das mit dem JFileChooser: setCurrentDirectory
 
B

Beni

Gast
Guter Einwand, das muss aber nicht sein: man kann "File.listFiles" verwenden, und dieser Methode einen "FileFilter" übergeben (FileFilter != FilenameFilter). Ein FileFilter kann aber Verzeichnisse erkennen, und rauswerfen.
 

thE_29

Top Contributor
Oder du machst halt schnell ne for Schleife

Code:
File file[] = ...listFiles();
int cnt = 0;
for(int x = 0; x != file.length; x++)
 if(!file[x].isDirectory())
  cnt++;
 
S

stev.glasow

Gast
thE_29 hat gesagt.:
Oder du machst halt schnell ne for Schleife

Code:
File file[] = ...listFiles();
int cnt = 0;
for(int x = 0; x != file.length; x++)
 if(!file[x].isDirectory())
  cnt++;

Mit nem Filter geht's schneller 8) :bae:
 

thE_29

Top Contributor
Jo, is klar, aber wer den Filter noch net kann und ne for Schleife schon ist mit dem auch bedient ;)
 
M

Miketronik

Gast
Ich habe mit der ganzen Mnemonik noch meine Probleme, z.B. habe ich jetzt mal sowas gemacht:

fc.setCurrentDirectory("c:\\");

da gibts gleich ne Fehlermeldung:
Faxverteiler.java:33: setCurrentDirectory(java.io.File) in javax.swing.JFileChooser cannot be applied to (java.lang.String)
fc.setCurrentDirectory("c:\\");


ich habe überhaupt Probleme mit der ganzen schreibweise:

in C habe ich früher immer so getestet, meinet wegen:

string alf;

alf=getCurrentDirectory();

printf(alf);

da weiste erstmal was zurück kommt, aber sowas bekomme ich in Java nich hin. Da gibt immer irgendeine Fehlermeldung. Bin eben ein Anfänger.
 
B

Beni

Gast
Wenn Du dem Link folgst, den ich oben gepostet habe, siehst du, dass setCurrendDirectory ein File erwartet, keinen String.

Also:
Code:
File directory = new File( "c:/" );
jFileChooser.setCurrendDirectory( directory );
 

thE_29

Top Contributor
Wie wärs mit ;)

Code:
fc.setCurrentDirectory(new File("C:\\"));

Nachtrag: mist langsamer, elendiges ICQ lenkt nur ab ;)
 
M

miketronik

Gast
Hallo,

habe ich gelesen und was liefert dann getCurrentDirectory() zurück? Wo bekomme ich dann raus was File ist und wie ich das dargestellt bekomme?

Danke Mike
 

meez

Top Contributor
ich würds auch mit nem Filter machen:

Filterklasse (Kannst dir ja ne Bibliothek mit solch generischen Klassen anlegen)
Code:
public class FilterFiles implements FileFilter {
  public boolean accept(File file) {
     return !file.isDirectory();
  }
}
Aufruf dann so:
Code:
int anzfiles = new File("<pfad zum directory>").listFiles(new FilterFiles ()).length();
 
M

miketronik

Gast
Hallo alle zusammen,

mir ist es jetz soweit klar wie man auf ein Verzeichnis zugreift und die Anzahl der Dateien feststellt. Aber ein Beispiel FileFilter währe ganz gut. So das man am Ende selektieren kann, z.B. *.gif.
 

Illuvatar

Top Contributor
Meez hat doch schon einen geschrieben, den könnte man halt jetzt noch um eine Endung erweitern:
Code:
public class FilterFiles implements FileFilter { 
  public boolean accept(File file) { 
     return !file.isDirectory() && file.getName().endsWith (".gif"); 
  } 
}
 
M

miketronik

Gast
Ja ist mir klar aber ich habe eben weiter ein Problem, hier mal mein Codeschnipsel, es kommt false raus bei der Ausgabe in Zeile 35. Warum.

Danke Mike


Code:
import java.io.*;
import java.util.*;

public class TestFile
{
  public static void main(String[] args)
  {
    File tmpfile = new File("d:\\java\\quellen\\Testfile\\");
    TestFile.printFileInfo(tmpfile);
  }
  static void printFileInfo(File tmpfile)
  {
   System.out.println("Name            = " + tmpfile.getName());
   System.out.println("Path            = " + tmpfile.getPath());
   System.out.println("Absoluter Pfad  = " + tmpfile.getAbsolutePath());
   System.out.println("Parent          = " + tmpfile.getParent());
   System.out.println("exists          = " + tmpfile.exists());
   System.out.println("canWrite        = " + tmpfile.canWrite());
   System.out.println("canRead         = " + tmpfile.canRead());
   System.out.println("isFile          = " + tmpfile.isFile());
   System.out.println("isDirectory     = " + tmpfile.isDirectory() + "\n");
   if (tmpfile.isDirectory()) {
     String[] fils = tmpfile.list();     //hier wird ein Array angelegt das so
                                         //tief ist wie die Anzahl Elemente in
                                         //tmpfile mit list() festgestellt

     System.out.println("Anzahl Einträge = " + fils.length);
                                         //hier wird die Tiefe des Arrays mit
                                         //length gelesen und ausgegeben



     //Hier ist mein Problem!!!! wiso false ???
     System.out.println(tmpfile.getName().endsWith(".class"));
                                         
     for (int i=0; i<fils.length; ++i) {
       System.out.println("  "+fils[i]);
     }

   }

  }

}
 

Illuvatar

Top Contributor
Höh? Weil der Name eben net auf class endet. Wieswo sollte er auch ???:L SSchau mal was du da übergibst in der main, das hat mit class nix zum tun.
 
M

miketronik

Gast
Illuvatar hat gesagt.:
Höh? Weil der Name eben net auf class endet. Wieswo sollte er auch ???:L SSchau mal was du da übergibst in der main, das hat mit class nix zum tun.

In der Main übergebe ich das Verzeichnis wo mein Testprogramm steht das heist Testfile und da dazu gibts eine TestFile.class und irgendeine Backup.class das sind dann 2. Ich brauche am Ende die Anzahl Files mit der oder der Endung im Verzeichnis, zum Test eben mal class.

Mike
 
M

miketronik

Gast
Illuvatar hat gesagt.:
Vielleicht willst du die Ausgabe in der for-Schleife machen, und zwar net von zmpfile sondern dann von fils?


Ja so geht es, es ist aber dann eine Schleife wie oben geschrieben und hat wenig mit nem Filter zu tun. Kann es sein, das FileFilter nur auf Filecooser anzuwenden ist? Ich habe das mit der Vererbung sowiso noch nicht richtig verstanden.

Code:
public class TestFile
{
  public static void main(String[] args)
  {

    File tmpfile = new File("d:\\java\\quellen\\Testfile\\");
    TestFile.printFileInfo(tmpfile);
  }
  static void printFileInfo(File tmpfile)
  {
   System.out.println("Name            = " + tmpfile.getName());
   System.out.println("Path            = " + tmpfile.getPath());
   System.out.println("Absoluter Pfad  = " + tmpfile.getAbsolutePath());
   System.out.println("Parent          = " + tmpfile.getParent());
   System.out.println("exists          = " + tmpfile.exists());
   System.out.println("canWrite        = " + tmpfile.canWrite());
   System.out.println("canRead         = " + tmpfile.canRead());
   System.out.println("isFile          = " + tmpfile.isFile());
   System.out.println("isDirectory     = " + tmpfile.isDirectory() + "\n");
   if (tmpfile.isDirectory()) {
     String[] fils = tmpfile.list();     //hier wird ein Array angelegt das so
                                         //tief ist wie die Anzahl Elemente in
                                         //tmpfile mit list() festgestellt

     System.out.println("Anzahl Einträge = " + fils.length);
                                         //hier wird die Tiefe des Arrays mit
                                         //length gelesen und ausgegeben
                                         
     int j=0;
     for (int i=0; i<fils.length; ++i) {
       if (fils[i].toLowerCase().endsWith(".class")) {
         ++j;
       }
     }
     System.out.println("Anzahl *.class = " + j);

   }

  }

}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Alle .java Dateien von einem Verzeichnis in eine Zip speichern Java Basics - Anfänger-Themen 2
J Alle Dateien aus einem Verzeichnis laden Java Basics - Anfänger-Themen 10
T Dateien aus einem Verzeichnis in eine Textdatei schreiben Java Basics - Anfänger-Themen 3
M Namen der Dateien in einem bestimmten Verzeichnis erhalten Java Basics - Anfänger-Themen 4
T Dateien/Ordner in einem Verzeichnis zählen Java Basics - Anfänger-Themen 13
R dateien in einem verzeichnis einlesen Java Basics - Anfänger-Themen 3
I Dateien in einem .war - File durchgehen? Java Basics - Anfänger-Themen 1
P Problem :Java-Dateien in einem Ordner ablegen Java Basics - Anfänger-Themen 10
S Dateien von einem Ordner in den anderen kopieren Java Basics - Anfänger-Themen 2
H Von einem Applet Dateien an einen Server schicken Java Basics - Anfänger-Themen 5
S Ich kann mit einem Eclipse 3.2 keine Java Dateien Starten Java Basics - Anfänger-Themen 10
M Dateien aus einem Projekt in einem anderen verfügbar machen? Java Basics - Anfänger-Themen 2
M Dateien in einem Ordner, JList Java Basics - Anfänger-Themen 7
S Alle Dateien in einem Ordner zählen Java Basics - Anfänger-Themen 7
C Text Dateien aus einem Ordner auslesen? Java Basics - Anfänger-Themen 3
tomzen Java Unterstützung für exel dateien installieren. Java Basics - Anfänger-Themen 2
I Backend in Java und Ansicht von Dateien in statische HTML Seiten? Java Basics - Anfänger-Themen 15
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
I Dateien aus dem Resource Folder laden Java Basics - Anfänger-Themen 2
A Thread XML-Dateien zusammenfügen Java Basics - Anfänger-Themen 11
Buroto Threads Verschiedene .txt Dateien Auf Listen und Verbinden Java Basics - Anfänger-Themen 3
J Dateien lesen und schreiben Java Basics - Anfänger-Themen 5
B Jar Dateien ohne IDE verwenden? Java Basics - Anfänger-Themen 1
A Optimierung eines Programms: Mergen der Dateien Java Basics - Anfänger-Themen 23
A Zwei XML-Dateien Mergen Java Basics - Anfänger-Themen 14
A Input/Output Mehrere Csv-Dateien einlesen Java Basics - Anfänger-Themen 2
LetsSebi Dateien werden nicht in Zip gespeichert Java Basics - Anfänger-Themen 1
MiMa log4j als separate Dateien in Schleife? Java Basics - Anfänger-Themen 6
M Scannen von *.txt - Dateien; wo sind der oder die Fehler? Java Basics - Anfänger-Themen 4
A Input/Output Dateien einlesen und ausgeben Java Basics - Anfänger-Themen 7
S Lese- / Schreibfähigkeit von Dateien sicherstellen Java Basics - Anfänger-Themen 1
C "HelloWorld" - Dateien erstellt, aber ist es eine class-Datei? Java Basics - Anfänger-Themen 2
J Java findet plötzlich die Dateien im Projekt nicht mehr. Java Basics - Anfänger-Themen 12
J Dateien in Verzeichnissen rekursiv auflisten wirft Exception Java Basics - Anfänger-Themen 4
L Classpath Alle Dateien im Classpath finden Java Basics - Anfänger-Themen 4
MiMa Formate für Dateien und Pfade? Java Basics - Anfänger-Themen 1
O Datei in mehrere kleine Dateien umwandeln Java Basics - Anfänger-Themen 47
L Richtige Reihenfolge der Dateien Java Basics - Anfänger-Themen 5
CptK Datentypen Text Dateien einlesen Java Basics - Anfänger-Themen 3
J Logging erzeugt zwei dateien.... Java Basics - Anfänger-Themen 7
A Dateien Verschieben Java Basics - Anfänger-Themen 1
M Mehre Dateien parallel kopieren mit Multithreading Java Basics - Anfänger-Themen 8
C Methoden Dateien im Ordner anzeigen Java Basics - Anfänger-Themen 12
J Java-Dateien lassen sich nicht editieren Java Basics - Anfänger-Themen 46
E FTP Dateien hochladen Java Basics - Anfänger-Themen 3
J Probleme beim schreiben von Dateien Java Basics - Anfänger-Themen 5
Korvinus Vergleichen von 2 csv-Dateien Java Basics - Anfänger-Themen 2
I Texte mit Absätzen in Dateien speichern und auslesen Java Basics - Anfänger-Themen 1
M "substring()" mit Dateien und Pfadangaben Java Basics - Anfänger-Themen 5
Voreck Jar Dateien Standart programm ändern Java Basics - Anfänger-Themen 12
K Dateien aus Source-Package verwenden Java Basics - Anfänger-Themen 10
B Dateien aus dem "resource" - Folder kopieren in Verzeichnis Java Basics - Anfänger-Themen 9
B Kopieren von Dateien mit Adminberechtigungen Java Basics - Anfänger-Themen 14
F Threads ftp4j, viele Dateien upload Java Basics - Anfänger-Themen 5
P Einen Ordner mit Dateien hochladen [FTP] Java Basics - Anfänger-Themen 2
X Dateien direkt hintereinander schreiben, Dateiname Java Basics - Anfänger-Themen 25
G Messwerte in 2 Dateien schreiben Java Basics - Anfänger-Themen 20
C Verarbeitung von sehr großen Dateien Java Basics - Anfänger-Themen 52
F Input/Output Dateien lesen/schreiben Java Basics - Anfänger-Themen 1
V Mehrere Dateien aus JFileChooser in eine ArrayList speichern Java Basics - Anfänger-Themen 2
K Dateien lesen | IndexOutOfBoundsException Java Basics - Anfänger-Themen 2
T Classpath Problem mit dem auslesen von Text-Dateien (Pfad) Java Basics - Anfänger-Themen 3
A attach source: Zusammenhang zwischen JAR und .class/.java Dateien? Java Basics - Anfänger-Themen 2
T .jar Datei als Ordner benutzen/ Dateien aus .jar Datei auslesen Java Basics - Anfänger-Themen 3
C Klassen Class Files nachladen (mehrer .jar Dateien) Java Basics - Anfänger-Themen 2
Bluedaishi for schleife um Dateien wieder zusammen zu fügen Java Basics - Anfänger-Themen 11
S Resourcen-Dateien im Jar-File verfügbar machen (Intellij 14) Java Basics - Anfänger-Themen 14
J Dateien für anderen User "mitgeben" Java Basics - Anfänger-Themen 1
S Dateien mit Java verschieben Java Basics - Anfänger-Themen 6
A Heap Space Error bei rekursiver Suche in Dateien trotz nur einer Zeile im Speicher Java Basics - Anfänger-Themen 26
E Dateien werden nicht gelöscht Java Basics - Anfänger-Themen 10
S Class Dateien decompilieren Java Basics - Anfänger-Themen 4
T Fehler beim Schreiben in Dateien! Java Basics - Anfänger-Themen 4
Bluedaishi Dateien Lassen sich unter windows nicht löschen Java Basics - Anfänger-Themen 8
Z Mehrere XML-Dateien zu einer zusammenfügen Java Basics - Anfänger-Themen 3
K JAR Dateien einbinden - funkt nicht wie es sollte... Java Basics - Anfänger-Themen 22
M Threads nio Dateien kopieren, Threads und Gui Java Basics - Anfänger-Themen 0
J *.sql Dateien in Java Java Basics - Anfänger-Themen 1
P Dateien im Ordner auflisten. Java Basics - Anfänger-Themen 3
P Compiler-Fehler .java Dateien kompilieren und .class Dateien zur .jar Java Basics - Anfänger-Themen 4
S Daten aus anderen Dateien in neue Datei einlesen Java Basics - Anfänger-Themen 3
M Input/Output Arbeiten mit extrem vielen Dateien Java Basics - Anfänger-Themen 8
R File chooser Dateien in frame anzeigen lassen Java Basics - Anfänger-Themen 5
N tar-Dateien Java Basics - Anfänger-Themen 6
B Methoden Dateien konvertieren Java Basics - Anfänger-Themen 3
L Dateien speichern/auslesen Java Basics - Anfänger-Themen 5
M Input/Output Probleme beim Parsen von CSV und TXT Dateien Java Basics - Anfänger-Themen 7
P Wiedereinstieg und kann keine Dateien mehr öffnen... Java Basics - Anfänger-Themen 13
F Classpath Dateien einbinden und Classpath durchsuchen Java Basics - Anfänger-Themen 2
N Java Programm zum Suchen und Ersetzen von Text Dateien Java Basics - Anfänger-Themen 10
S Dateien/LinkedList/StringBuffer - SOrtierung klappt nicht so ganz Java Basics - Anfänger-Themen 2
U Best Practice Nicht-permanente Links auf Dateien Java Basics - Anfänger-Themen 5
B In welchem (Default) Pfad erstellt Java Dateien? Java Basics - Anfänger-Themen 4
I Methoden zum lesen und speichern von Dateien Java Basics - Anfänger-Themen 2
B .ut dateien ignorieren und fortsetzen Java Basics - Anfänger-Themen 9
R Ressourcen in JAR-Dateien Java Basics - Anfänger-Themen 2
J jar Dateien global erreichbar machen Java Basics - Anfänger-Themen 3
L Zusammenführen mehrerer .txt Dateien Java Basics - Anfänger-Themen 4
M Dateien erstellen/ bearbeiten/ lesen Java Basics - Anfänger-Themen 9
S Dateien in RAM kopieren und ausführen? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben