Hallo!
Ich spiele grad ein wenig mit Java und war jetzt bei Dateien lesen/schreiben angekommen.
Also wollte ich einen kleinen Editor in der Konsole schreiben. Es soll einfach die Datei lesen, den aktuellen Inhalt ausgeben und einen neuen speichern.
Damit ich ein wenig übe habe ich alles in Klassen unterteilt: Die Main Klasse, eine Editor und eine FileHandler Klasse.
Das öffnen geht soweit, nur gibt er leider eine NullPointerExp. zurück, wenn es um die Ausgabe geht.
Hier erst einmal der Quellcode:
Main
import java.io.IOException;
public class Main {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
new Editor();
}
}
Editor
import java.io.IOException;
import java.util.Scanner;
public class Editor {
private String filename = "";
private String filepath = "";
private String newContent = "";
public Editor() throws IOException
{
Scanner scanner = new Scanner(System.in);
System.out.println("In welchem Ordner liegt die Datei? (leer lassen für Standard)");
this.filepath = scanner.nextLine();
System.out.println("Wie ist der Name der Datei?");
this.filename = scanner.nextLine();
FileHandler fh = new FileHandler(this.filepath, this.filename);
System.out.println("Datei geöffnet, aktueller Inhalt: ");
for (String zeile : fh.getFilecontent()) {
System.out.println(zeile);
}
}
}
FileHandler
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
public class FileHandler {
private String filename = "";
private String filepath = "";
private ArrayList<String> filecontent;
public FileHandler(String filepathToOpen, String filenameToOpen) throws IOException
{
this.filename = filenameToOpen;
this.filepath = filepathToOpen;
this.openFile();
}
private void openFile() throws IOException
{
String zeile = "";
try
{
FileReader filereader = new FileReader(this.filepath + this.filename);
BufferedReader br = new BufferedReader(filereader);
do
{
zeile = br.readLine();
try
{
System.out.println(zeile);
this.filecontent.add(zeile);
}
catch (Exception ex)
{
}
} while (zeile != null);
}
catch (FileNotFoundException ex)
{
System.err.println(ex);
}
}
public ArrayList<String> getFilecontent() {
return filecontent;
}
public void setFilecontent(ArrayList<String> filecontent) {
this.filecontent = filecontent;
}
public boolean saveFile() throws IOException
{
File datei = new File(this.filepath + this.filename);
FileWriter fw = new FileWriter(datei, true);
for (String line : this.filecontent) {
fw.write(line);
}
return true;
}
}
In der Textdatei steht einfach nur:
Die Konsolenausgabe sieht wie folgt aus:
Die Zeile 22 in der Editor.java ist die folgende:
for (String zeile : fh.getFilecontent()) {
Da ich in der FileHandler eigentlich auf NULL prüfe, bevor ich die Daten speichere, wundere ich mich, dass diese Meldung kommt.
Allgemein: Da ich Anfänger bin, bin ich auch über jedes Kommentar bezüglich des Programmierstiles dankbar.
Einen schönen Freitag wünscht
Alex