File List() Frage

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
hi,

ich stehe vor einen Problem hier mal meine Methode:

Code:
         File f1 = new File("c:/Lyrics/");
         System.out.println(f1.list());
         for(int i = 0; i <= anzahl; i++) {
                 resultS[i] = f1.list();
                 System.out.println(resultS[i]);
         }

und hier die Fehlermeldung:

Code:
search.java:129: incompatible types
found   : java.lang.String[]
required: java.lang.String
                 resultS[i] = f1.list();
                                     ^
1 error


So was ich hier nicht verstehe ist warum er incompatible Types sagt obwohl die Sachen von f1.list() in einen String array gespeichert wird ?
 
resultS ist ein String-Array ?

Dann ist resultS ein String und f1.list() liefert ein String-Array.

Alles klar ?
 
Genau, resultS ist ein String array und list() liefert ein String array und ich möchte es in resultS speichern.
 
eigentlich logisch:
resultS ist ein String (das i-te Element des Stringarrays)
f1.list() liefert ein Stringarray (mit so vielen Elementen wie in dem Ordner enthalten sind)
 
hmm am besten ich schicke mal das ganze Programm ich finde den Fehler einfach nicht.

Code:
//Suche funktioniert nicht :-(

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;


public class search extends Frame {
  // Anfang Variablen

  private TextField searchTF = new TextField();
  private Button searchB = new Button();
  private List results = new List();
  public int anzahl;
  public String searchS = "";
  public String searchDir = "";
  public String[] resultS = new String[100];
  public String listS[] = new String[100];
  public String saveS = "";
  lyric l1;
  File f1;
  // Ende Variablen

  public search(String title) {
    // Frame-Initialisierung
    super(title);

    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { dispose(); }
    });

    int frameWidth = 300;
    int frameHeight = 300;
    setSize(frameWidth, frameHeight);
    Panel cp = new Panel(null);
    add(cp);
    // Anfang Komponenten

    searchTF.setBounds(96, 8, 185, 24);
    searchTF.setText("");
    cp.add(searchTF);
    searchB.setBounds(8, 8, 75, 25);
    searchB.setLabel("Search");
    cp.add(searchB);
    searchB.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        searchBActionPerformed(evt);
      }
    });

    results.setBounds(8, 48, 273, 217);
    cp.add(results);
    
    //files = new java.util.Vector();
    //found = new java.util.Vector();
    // Ende Komponenten
    
    //Icon setzen
    Toolkit kit = this.getToolkit();
    Image img = kit.getImage( "LSicon.gif" );

    while ( !prepareImage( img, -1, -1, this) ) {
      try {
        Thread.sleep( 100 );
      } catch ( Exception e ) {}
    }
    setIconImage( img );
    show();

    setResizable(false);
    setVisible(true);
  }

  // Anfang Ereignisprozeduren
  public void searchBActionPerformed(ActionEvent evt) {
         searchS = searchTF.getText();
         count();
         searchIt();
         //searchFinal();
  }
  public void count() {
         File dir = new File(saveS);
         File[] arr = dir.listFiles(new FilenameFilter(){
            public boolean accept(File dir, String name) {
                if(name.toLowerCase().endsWith(".txt")) return true;
                return false;
            }
         });
         anzahl = arr.length;
  }
  //Suche !!!
  public void searchIt() {
         File f1 = new File("c:/Lyrics/");
         System.out.println(f1.list());
         for(int i = 0; i <= anzahl; i++) {
                 resultS[i] = f1.list();
                 System.out.println(resultS[i]);
         }
  }
  public void getSave(String saveS) {
         this.saveS = saveS;
         System.out.println(saveS);
  }
  // Ende Ereignisprozeduren

  public static void main(String[] args) {
    new search("search");
  }
}


So und die Methode SearchIt ist es ...
 
Also noch mal zum Mitschreiben:
resultS ist ein STRING
f1.list() liefert ein STRINGARRAY
Du kannst kein Stringarray in einen String speichern!
 
Wie wärs damit?

Code:
        File f1 = new File("c:/Lyrics/"); 
         resultS = f1.list(); 
         for(int i = 0; i <= resultS.length; i++) { 
                 System.out.println(resultS[i]); 
         }
 
Sky und Tiny haben versucht es dir zu erklären.

Vielleicht bin ich ja der glückliche Dritte 😎

resultS = f1.list();

f1.list() liefert dir eine String-Array

resultS ist auch ein String-Array, da hast du schon Recht.

ABER

resultS ist eben kein String-Array mehr sondern nur noch ein einzelner String(Verweis).

Du könntest schreiben:

resultS = f1.list();
 
Hmm ok ok tut mir sorry bin halt bischen schlampig in sachen java obowhl ich das schon bischen länger mache ...
 
tini hat gesagt.:
@hobbit:
nun lass ihn doch auch mal ein bissl selber denken! :bae:

k, merks mir fürs nächste mal :wink: .

btw: Als ich angefangen hab den Post zu schreiben standen noch keine anderen Antworten da ... ich hasse es abgelenkt zu werden
 
Hobbit_Im_Blutrausch hat gesagt.:
Als ich angefangen hab den Post zu schreiben standen noch keine anderen Antworten da ... ich hasse es abgelenkt zu werden

Einfache Lösung: Wir erlauben das Posten einfach nur synchronized.

Hobbit ist da mittlerweile Experte... 😎
 
jup, und wenn wir nicht bald unsere Posts mit dem Topic "synchronisieren" gibts hier von nem Admin/Mod nen split bzw. wird geclosed ... :noe:
 
Hobbit_Im_Blutrausch hat gesagt.:
Wie wärs damit?

Code:
        File f1 = new File("c:/Lyrics/"); 
         resultS = f1.list(); 
         for(int i = 0; i <= resultS.length; i++) { 
                 System.out.println(resultS[i]); 
         }

Das geht garnicht wenn ihr mal richtig überlegt. Er will ja unebdingt ein Array wo er das reinspeichern möchte und das ich f1.list() in ein String schreiben möchte will er nicht.
Also muss ich ihn ein String array geben ?!

EDIT: ODer bin ich jetzt total Bekloppt ? Und verstehe nichts mehr 😀

EDIT2: OK ich bin total verwirrt gewesen :roll:

Nun mal noch ne Frage, wie kann ich jetzt die ergegnisse in ein String speichern ???
 
fantrixx hat gesagt.:
Er will ja unebdingt ein Array wo er das reinspeichern möchte

Er redet immer von ihm in der dritten Person weils einfach cooler kommt!? :autsch:

fantrixx hat gesagt.:
EDIT: ODer bin ich jetzt total Bekloppt ? Und verstehe nichts mehr 😀

wer weiß ...

fantrixx hat gesagt.:
EDIT2: OK ich bin total verwirrt gewesen :roll:

Habs gemerkt

fantrixx hat gesagt.:
Nun mal noch ne Frage, wie kann ich jetzt die ergegnisse in ein String speichern ???

Code:
StringBuilder builder = new StringBuilder();
for (String str : array) {
    builder.append(str + " ");
}
System.out.println(builder.toString());

Wars das mit der verwirrerei oder müssen wir uns auf noch was gefasst machen? :lol: :wink:
 
Fangen wir doch mal vorne an: Wie lautet denn die Anforderung ?

Du willst ein Liste von Dateien haben ? Alle in einenem String ?? Womöglich noch mit Komma getrennt ?

Oder willst Du ein String-Array haben, wo alle Dateien eines bestimmten Verzeichnisses drin stehen ?
 
Ich will ein String array wo jeder String seinen Platz hat.
Achja noch was zu hobbit:
die anweisung in der for schleife verstehe ich nicht ganz.

EDIT: Und ausserdem gibt es in der API kein "StringBuilder"
 
Code:
for (String str : array) {
    builder.append(str + " ");
}

ist die seit Java 1.5 mögliche Schreibweise für
Code:
for (int i= 0; i < array.length(); ++i) ) {
    builder.append(array[i] + " ");
}

Es werden also alle Strings, durch Blank getrennt, aneinandergehängt.
Aber das willst du ja gar nicht.

Darum ist uns irgendwie nicht klar was du willst:

Ich will ein String array wo jeder String seinen Platz hat.
Genau das liefert doch die list()-Methode der Klasse File :shock:
 
fantrixx hat gesagt.:
EDIT: Und ausserdem gibt es in der API kein "StringBuilder"

StringBuilder gibts erst seit Java 1.5, genauso wie die Schleife (hat ja Leroy42 schon erklärt). Vorher solltest du den StringBuffer verwenden.

Ansonsten siehe post von Leroy42 😉
 
ja ist klar aber wie kann ich sagen das ich nun den String an Stelle 2 mit einem String den ich habe vergleichen kann. Ich habe ja so nicht direkt einen String mit plätzen. Und deswegen habe ich versucht das ganze in einen Sring array zu speichern und so das alls zu lösen aber wie es scheint funktoniert das ja so nicht ... Ich will einfach nur auf alle Strings einzelnd zugreifen und damit arbeiten.
 
Hobbit_Im_Blutrausch hat gesagt.:
fantrixx hat gesagt.:
EDIT: Und ausserdem gibt es in der API kein "StringBuilder"

StringBuilder gibts erst seit Java 1.5, genauso wie die Schleife (hat ja Leroy42 schon erklärt). Vorher solltest du den StringBuffer verwenden.

Ansonsten siehe post von Leroy42 😉

Na das sollte mir erstmal jmd. erklären *lol* Wo bekomme ich 1.5 her ?
 
Hi ,
ich hätte auch mal eine Frage zum Thema.

Wie kann man ein Programm dazu veranlassen, unabhängig davon in welchem Verzeichnis es sich befindet, immer nur sein eigenes Verzeichnis auszulesen und anzuzeigen?(was für ein Bandwurmsatz :wink: ) Also keine absolute Pfadangabe!


Mfg
 
Über System.getProperty("user.dir") bekommst Du das aktuelle Projektverzeichnis als String. Davon kannst Du Dir dann ein File erzeugen und Dir den Inhalt auflisten lassen.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben