Hallo zusammen,
ich bin neu im Forum und fange gerade an Java zu lernen. Ich brüte gerade über der Lösung einer Aufgabe, die darin besteht, die eine Liste aller Dateien sowie Verzeichnisse des angegebenen Verzeichnisses(bzw. des aktuellen Verzeichnisses, wenn keines angegeben ist) sowie der Dateien und Verzeichnisse aller Unterverzeichnisse zu erstellen. Die genaue Aufgabenstellung findet sich hier:
http://swtsrv01.cs.hs-rm.de/LectureNotes/work/lecturenotes-exercises-blatt11-1.pdf
Dabei sollen die verwendeten Methoden sich nacheinander aufrufen. Außerdem soll eine Datei eingelesen werden und in ein anderes Format umgewandelt werden. Der nachfolgend gezeigte Code müsste eigentlich funktionieren, da das Programm auf einem anderen System schon mal lief. Wenn ich den Code ausführe erhalte ich allerdings folgende Meldung:
java.lang.ArrayIndexOutOfBoundsException: 0
Weiß jemand, wo der Fehler liegt? Btw, ich verwende ein Windows-System mit Eclipse.
Wichtiger noch wäre mir allerdings den hier gezeigten Code einmal selbst nachvollziehen zu können.
Ich habe den Code nicht selbst geschrieben und habe leider einige Verständnisprobleme. Vielleicht kann mir jemand einen Schubs in die richtige Richtung geben?
Ich poste nachfolgend mal den vollständigen Code und stelle einfach mal meine Fragen.
Wofür stehen die Anführungszeichen mit dem Punkt in der Returnanweisung? Ich habe mir sagen lassen, dass hiermit die nachfolgende Methode aufgerufen wird, aber wieso eigentlich?
Wozu wird hier der Parameter fileName vom Stringtyp übergeben? In der Reurnanweisung soll die nun folgende Methode aufgerufen werden, aber wofür steht eigentlich getFileList(new File(fileName));?
Hier wieder die Frage wofür der Parameter startFile vom Filetyp übergeben wird. Und wozu habei ich in der Returnanweisung startFile, new ArrayList<File>());?
Wie obiger Abschnitt funktioniert kann ich gar nicht sagen;(
Nun kommt noch die Dateikonvertierungsmethode
Kapier ich auch ned.:bahnhof:
Und schließlich zum Abschluss die Mainmethode
Damit wäre das Programm dann abgeschlossen.
Zum letzten Abschnitt habe ich dann auch noch Fragen. Ich nehme an, mit dem Codeabschnitt
wird die erste Methode
aufgerufen. Aber wie genau funktioniert der Methodenaufruf?
Wie funktioniert der Methodenaufruf
und warum erhalte ich folgende Fehlermeldung beim Programmaufruf:
"convert failure!"
java.lang.ArrayIndexOutOfBoundsException: 0
Ich weiss, dass sind eine Menge Fragen aber ich komme hier gerade echt nicht weiter. Bin noch blutiger Anfänger was Programmieren angeht. Aber die von mir im im 1. Sem. im IT-Studium zu bearbeitenden Aufgaben sind kann ich mir leider nicht aussuchen. Wisst Ihr vielleicht Rat, in welches Thema ich mich am besten als erstes einlese, wenn ich das hier alles nachvollziehen möchte und welche Quellen ich verwenden könnte? Das Skript meines Professors hilft mir leider hier nicht weiter und ich habe auch schon einiges in verschiedenen JAVA-Büchern gelesen. Zum Thema Read the ****ing manual::rtfm: Ich scheue mich nicht davor, Zeit und Energie zu investieren und mich selbst einzulesen, aber bitte seht es mir nach, dass ich hier dennoch eine ganze Menge Fragen stelle.
Vielen Dank im voraus!
ich bin neu im Forum und fange gerade an Java zu lernen. Ich brüte gerade über der Lösung einer Aufgabe, die darin besteht, die eine Liste aller Dateien sowie Verzeichnisse des angegebenen Verzeichnisses(bzw. des aktuellen Verzeichnisses, wenn keines angegeben ist) sowie der Dateien und Verzeichnisse aller Unterverzeichnisse zu erstellen. Die genaue Aufgabenstellung findet sich hier:
http://swtsrv01.cs.hs-rm.de/LectureNotes/work/lecturenotes-exercises-blatt11-1.pdf
Dabei sollen die verwendeten Methoden sich nacheinander aufrufen. Außerdem soll eine Datei eingelesen werden und in ein anderes Format umgewandelt werden. Der nachfolgend gezeigte Code müsste eigentlich funktionieren, da das Programm auf einem anderen System schon mal lief. Wenn ich den Code ausführe erhalte ich allerdings folgende Meldung:
java.lang.ArrayIndexOutOfBoundsException: 0
Weiß jemand, wo der Fehler liegt? Btw, ich verwende ein Windows-System mit Eclipse.
Wichtiger noch wäre mir allerdings den hier gezeigten Code einmal selbst nachvollziehen zu können.
Ich habe den Code nicht selbst geschrieben und habe leider einige Verständnisprobleme. Vielleicht kann mir jemand einen Schubs in die richtige Richtung geben?
Ich poste nachfolgend mal den vollständigen Code und stelle einfach mal meine Fragen.
Java:
import java.util.*;
import java.io.*;
public class FileList {
public static List<File> getFileList()
throws IOException {
return getFileList(".");
}
Wofür stehen die Anführungszeichen mit dem Punkt in der Returnanweisung? Ich habe mir sagen lassen, dass hiermit die nachfolgende Methode aufgerufen wird, aber wieso eigentlich?
Java:
public static List<File> getFileList(String fileName)
throws IOException {
return getFileList(new File(fileName));
}
Wozu wird hier der Parameter fileName vom Stringtyp übergeben? In der Reurnanweisung soll die nun folgende Methode aufgerufen werden, aber wofür steht eigentlich getFileList(new File(fileName));?
Java:
public static List<File> getFileList(File startFile)
throws IOException {
return getFileList(startFile, new ArrayList<File>());
Hier wieder die Frage wofür der Parameter startFile vom Filetyp übergeben wird. Und wozu habei ich in der Returnanweisung startFile, new ArrayList<File>());?
Java:
//Recursively add current files to result list
}
public static List<File> getFileList(File startFile, List<File> result)
throws IOException {
if (!startFile.isDirectory()) throw new IOException();
result.add(startFile);
result.add (startFile);
for (File f: startFile.listFiles()) {
if (f.getName().equals("..")) continue; //not needed according to docs
if (f.isFile()) result.add(f);
else result = getFileList(f, result);
}
return result;
}
Wie obiger Abschnitt funktioniert kann ich gar nicht sagen;(
Nun kommt noch die Dateikonvertierungsmethode
Java:
static void convert(String inFile, String outFile, String inEnc, String outEnc)
throws Exception {
Reader in = new BufferedReader(new InputStreamReader(new FileInputStream(inFile), inEnc));
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), outEnc));
int c=0;
do {
c = in.read();out.write((char)c);
} while (c>0);
in.close();
out.close();
}
Kapier ich auch ned.:bahnhof:
Und schließlich zum Abschluss die Mainmethode
Java:
public static void main(String[] args) {
try {
for (File f: getFileList(args[0])) System.out.println(f);
convert("C:/Users/Thomas/Workspace/Übungsblatt11/src/FileList.java", "test.java", "utf-8", "utf-16");
}
catch(IOException ex) {
System.out.println (ex.toString());
System.out.println("Not a directory: " + args[0]);
}
catch(Exception ex) {
System.out.println(ex.toString());
System.out.println("convert failure!");
}
}
}
Zum letzten Abschnitt habe ich dann auch noch Fragen. Ich nehme an, mit dem Codeabschnitt
Java:
for(File F: getFileList(args[0])) System.out.prinln(f);
Java:
List<File> getFileList()
Wie funktioniert der Methodenaufruf
Java:
convert("C:/Users/Thomas/Workspace/Übungsblatt11/src/FileList.java", "test.java", "utf-8", "utf-16");
"convert failure!"
java.lang.ArrayIndexOutOfBoundsException: 0
Ich weiss, dass sind eine Menge Fragen aber ich komme hier gerade echt nicht weiter. Bin noch blutiger Anfänger was Programmieren angeht. Aber die von mir im im 1. Sem. im IT-Studium zu bearbeitenden Aufgaben sind kann ich mir leider nicht aussuchen. Wisst Ihr vielleicht Rat, in welches Thema ich mich am besten als erstes einlese, wenn ich das hier alles nachvollziehen möchte und welche Quellen ich verwenden könnte? Das Skript meines Professors hilft mir leider hier nicht weiter und ich habe auch schon einiges in verschiedenen JAVA-Büchern gelesen. Zum Thema Read the ****ing manual::rtfm: Ich scheue mich nicht davor, Zeit und Energie zu investieren und mich selbst einzulesen, aber bitte seht es mir nach, dass ich hier dennoch eine ganze Menge Fragen stelle.
Vielen Dank im voraus!
Zuletzt bearbeitet: