ich habe folgendes Problem und wäre für eine Antwort bzw. Hilfe sehr dankbar . Ich muss ein Programm schreiben das ein File auf macht sie liest und das Wort „procedures“ drinnen findet und die Zeile wo es ist ausgibt. Ich muss mein Chef so schnell wie möglich ein Demo davon zeige aber ich bin nicht so mächtig in JAVA . vielleicht könnt ihr mir ja helfen mfg
Code:
public static void main(String[] args) throws Throwable{
suchAlgoritmus objSuche = new suchAlgoritmus();
objSuche.auslesen();
}
public class suchAlgoritmus {
public void auslesen() throws IOException{
FileInputStream fis = null;
BufferedInputStream bis = null;
DataInputStream dis = null;
try{
InputStreamReader inStream =new InputStreamReader( System.in ) ;
BufferedReader stdin = new BufferedReader( inStream );
String fileName;
System.out.println("Geben Sie den Pfad ein wo das File sich befindet:");
fileName = stdin.readLine();
File file = new File(fileName);
try{
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
dis = new DataInputStream(bis);
String line = dis.readLine();
while (line != null) {
// line wird von File gelesen und auf den konsole.
System.out.println(line);
// hier muss "private void durchsuchen..." aufgerufen werden
this.durchsuchen(dis.readLine());
line = dis.readLine()
fis.close();
bis.close();
dis.close();
}
catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
catch (FileNotFoundException e) {
// TODO Auto-generated catch block
System.err.println ("Unable to read from file");
}
}
private void durchsuchen(String Line){
//Hier den Suchalgorytmus rein und die Line durchsuchen und ich weiß indexOf() muss die Arbeit machen aber wie!!!
String searchtext = “..”
while((line = in.readLine())!= null) {
if(line.indexOf(searchText) > -1) {
foundLines++;
if(!foundInFile) {
foundInFile = true;
System.out.println("Ergebnis in Datei:" + file.getAbsolutePath());
}
System.out.println("Zeile " + in.getLineNumber() + ": " + line);
}
}
}
Mit BufferedReader Zeile für Zeile die Datei lesen und den String der Zeile mit der Methode contains() überprüfen ob er das Wort beinhaltet. Wenn ja, diese Zeile ausgeben.
Zunächst mal solltest Du in der Methode durchsuchen nicht mehr die Datei auslesen - das machst Du doch schon im aufrufenden Code. Und dann dürfte sich die Methode auf ein
fis = new FileInputStream(file);
// Here BufferedInputStream is added for fast reading.
bis = new BufferedInputStream(fis);
dis = new DataInputStream(bis);
String line = dis.readLine();
int linem =1;
while (line != null) {
// this statement reads the line from the file and print it to
// the console.
System.out.println(line);
// this read the search method from the "private void durchsuchen..."
//this.durchsuchen(dis.readLine());
if(line.contains("Page")){
System.out.println("Zeile "+ linem + ": " +line);
}
linem++;
// Wichtig: nachlesen. Sonst wirds eine Endlosschleife... :-)
line = dis.readLine();
}
// dispose all the resources after using them.
fis.close();
bis.close();
dis.close();
}
aber wenn ich sie wie du gesagt hast in der Methode durchsuchen() schreiben will :
Code:
public void auslesen() throws IOException{
.
.
.
while (line != null) {
this.durchsuchen(dis.readLine());
.
.
}
private void durchsuchen(String Line){
String searchText= "procedures";
int linem =1;
if(line.contains(searchText)){
System.out.println("Zeile "+ linem + ": " +line);
}
linem++;
return line.contains( suchtext);
}
ist es so richtig ??