4 Stimmen

Wie erhält man eine einzelne Datei aus einem Ordner in Java?

Die Idee ist, eine einzige Datei zu nehmen, aber ich möchte nicht alle Dateien auflisten. Ich habe die Adresse des angegebenen Ordners, aber nicht den Namen.

Grundsätzlich möchte ich

findFileInFolder(String folderName) --- diese Methode gibt einen zufälligen Dateinamen oder die älteste in diesem Ordner erstellte Datei zurück

Hat das schon einmal jemand versucht? Gibt es eine Idee, wie man vermeiden kann, alle Dateien in einem Array aufzulisten und dann die erste Datei zu nehmen?


Hinzugefügt:

Nur für den Fall, dass ich mich nicht klar ausgedrückt habe (mein Englisch tut mir wirklich leid. Bitte verzeihen Sie mir, wenn ich präpotent oder aggressiv klinge, das ist wirklich nicht meine Absicht.) Die Datei wird nicht von einem Menschen ausgewählt, sie wird von der Maschine ausgewählt, ohne dass sie gefragt wird oder die Datei angezeigt wird, mit Ausnahme der Methode, die einen String mit dem Dateinamen zurückgibt

String findFileInFolder(String folderName)

Wie ich kommentiere, ist für die Nutzung von Ram und Prozessor, weil dies ein sekundärer Prozess und nicht die primäre des Projekts, so dass, wenn ich über tausend Dateien zu lesen, wird es erheblich reduzieren die Leistung meines Projekts :(

Danke ;)


Update: Das Programm läuft auf verschiedenen Computern, wenn ich also einfach auf das Verzeichnis zugreifen könnte, ohne darüber nachzudenken, welche Datei ich lesen soll, wäre das großartig =D


Hoffentlich letztes Update: Entschuldigt, dass ich euch gestört habe :)

Nach dem, was ich in den Antworten gelesen habe, gibt es keine Möglichkeit. Meine Frage ist: Welche guten Alternativen anstelle von einem Array würden Sie denken? Meine Idee ist, einen Index in einer Textdatei zu erstellen und nur die erste Zeile zu nehmen.

2voto

Saikios Punkte 3463

Ich beschloss, diesen Code zu verwenden, ist nicht genau das, was ich wollte, aber es funktioniert für jetzt.

  public static String getFileToCrawl(String directory){
      File dir = new File(directory);

      String[] children = dir.list();
      if (children == null) {
          return "";
      } else {
          int i=0;
          String filename = children[i];
          while (i<children.length && !filename.contains(".txt")){
              i++;
              filename = children[i];
          }
          return filename;
      }

  }

wenn es jemandem gefällt oder einen Weg kennt, diesen Code zu verbessern, ist er wirklich willkommen ;) wenn du ihn benutzen willst, fühl dich frei :D

1voto

Manuel Selva Punkte 17616

Sie können einen Blick werfen auf FileFilter Klasse und auf der public File[] listFiles(FileFilter filter)

Mit dieser Methode können Sie Dateien z. B. nach ihrem letzten Änderungsdatum filtern.

Nebenbei bemerkt, warum wollen Sie es vermeiden, alle Dateien aufzulisten, aus Gründen der Leistungsfähigkeit?

0voto

Denis Tulskiy Punkte 18706

In den aktuellen Versionen von Java gibt es keine Möglichkeit, dies zu tun, außer alle Dateien aufzulisten und die benötigten auszuwählen. Wenn Sie Java 7 verwenden können, gibt es eine FileVisitor Klasse, die einen Ordnerbaum durchlaufen kann, ohne alle Dateien aufzulisten.

-1voto

Paul M. Punkte 1

Ich weiß, dass dies ein altes Thema ist, aber hier ist ein schneller und schmutziger Weg, um es zu tun:

import java.io.File;
import java.util.Arrays;
import java.util.Collections;

public class Shuffle {
   public static void main(String[] argv) 
   throws Exception {

      File dir = new File(".");
      String[] children = dir.list();
      Collections.shuffle(Arrays.asList(children));
      System.out.println(children[0]);
   }   
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X