Tinobee
02-01-2007, 22:47
hallo, ich bin java-anfänger und auf der suche nach einer lösung für mein problem.
ich möchte gern texte analysieren und per char-vergleich auf die möglicherweise verwendete sprache (engl, deutsch, span. rus. usw.) schließen.
dazu hab ich vor, einen benutzer entweder eine textdatei mit inhalt als quelle angeben oder eine neue textdatei anlegen und per eingabestrom mit text füllen zu lassen. doch da hänge ich auch schon fest. ich schaffe es partout nicht, dass eine vorhandene datei angenommen und zu testzwecken ausgegeben wird noch dass eine neue datei angelegt und zu testzwecken ausgegeben wird. das problem liegt bei den pfaden. es klappt weder mit einem absoluten pfad auf die vom benutzer angelegte datei noch mit in hochstriche gesetzten dateinamen als standardlink auf das source folder. ferner möchte ich den nutzer nicht wirklich nötigen, seine datei immer ins source folder zu packen. aber für den anfang soll das trotzdem erstmal so sein. später würde ich dann noch versuchen, mit dateisuche zu arbeiten.
ich poste hier mal meinen aktuellen code in der hoffnung dass man mir die augen öffnet, denn ich finde meine fehler einfach nicht.
import java.io.*;
public class Sprachidentifizierung {
public static void main(String[] args) throws IOException, FileNotFoundException, Exception {
int c, alle = 0, keine = 0;
int[] alphabet = new int[26];
String dateiName;
InputStreamReader benutzerEingabe = new InputStreamReader( System.in );
BufferedReader eingabePuffer = new BufferedReader( benutzerEingabe );
PrintStream konsolenAusgabe = new PrintStream( System.out, true );
InputStream inhalt = null;
konsolenAusgabe.print("\nHallo, möchten Sie <1> eine vorhande Textdatei öffnen oder <2> eine neue erstellen? ");
int auswahl = Integer.parseInt( eingabePuffer.readLine());
if( auswahl == 1 )
{
konsolenAusgabe.println("Bitte sorgen Sie dafür, dass sich Ihre Textdatei im gleichen Verzeichnis" +
" wie auch das Javaprogramm befindet!");
konsolenAusgabe.println("Geben Sie nun bitte den Namen der Textdatei mit dem Suffix \".txt\" ein!");
dateiName = eingabePuffer.readLine();
inhalt = new FileInputStream( "F:/Eclipse Projekte/Klausur Programmierung 1 - Praxis/src/" + dateiName );
}
else
{
konsolenAusgabe.print("Wie soll Ihre Textdatei heißen? ");
dateiName = eingabePuffer.readLine() + ".txt";
File neueDatei = new File( "C:/" + dateiName );
konsolenAusgabe.println("Geben Sie bitte jetzt Ihren Text ein!");
BufferedWriter dateiSchreibPuffer = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream( neueDatei, true )) );
// FileOutputStream(String name, boolean append)
// creates an output file stream to write to the file with the
// specified name --> true, damit text an bereits vorhandenem
// angefügt wird anstatt diesen zu überschreiben
String neueEingabe = eingabePuffer.readLine();
dateiSchreibPuffer.write( neueEingabe );
dateiSchreibPuffer.newLine();
dateiSchreibPuffer.close();
}
Reader dateiInhalt = new FileReader( "C:/" + dateiName );
konsolenAusgabe.println( dateiInhalt ); // zum testlesen des inhaltes
}
}
diese version gibt bei auswahl <1> folgendes aus:
java.io.FileInputStream@182f0db
bei <2> klappt alles bis auf das auslesen und auf der konsoleausgeben. da bekomme ich ausgegeben java.io.FileReader@192d342.
selbst wenn ich aus
Reader dateiInhalt = new FileReader( "C:/" + dateiName + ".txt" );
die zeile
FileReader dateiInhalt = new FileReader( "datei.txt" );
mache, und damit auf eine sich im source folder dieses programmes befindende datei.txt verweise, wird diese nicht geöffnet.
da komm ich grad überhaupt nicht mit klar. könnt ihr mir helfen?
vielen dank schonmal im voraus ...
grüße,
tinobee
EDIT: Code nachträglich in CODE-Tags gesetzt ... (danke für den hinweis)
ich möchte gern texte analysieren und per char-vergleich auf die möglicherweise verwendete sprache (engl, deutsch, span. rus. usw.) schließen.
dazu hab ich vor, einen benutzer entweder eine textdatei mit inhalt als quelle angeben oder eine neue textdatei anlegen und per eingabestrom mit text füllen zu lassen. doch da hänge ich auch schon fest. ich schaffe es partout nicht, dass eine vorhandene datei angenommen und zu testzwecken ausgegeben wird noch dass eine neue datei angelegt und zu testzwecken ausgegeben wird. das problem liegt bei den pfaden. es klappt weder mit einem absoluten pfad auf die vom benutzer angelegte datei noch mit in hochstriche gesetzten dateinamen als standardlink auf das source folder. ferner möchte ich den nutzer nicht wirklich nötigen, seine datei immer ins source folder zu packen. aber für den anfang soll das trotzdem erstmal so sein. später würde ich dann noch versuchen, mit dateisuche zu arbeiten.
ich poste hier mal meinen aktuellen code in der hoffnung dass man mir die augen öffnet, denn ich finde meine fehler einfach nicht.
import java.io.*;
public class Sprachidentifizierung {
public static void main(String[] args) throws IOException, FileNotFoundException, Exception {
int c, alle = 0, keine = 0;
int[] alphabet = new int[26];
String dateiName;
InputStreamReader benutzerEingabe = new InputStreamReader( System.in );
BufferedReader eingabePuffer = new BufferedReader( benutzerEingabe );
PrintStream konsolenAusgabe = new PrintStream( System.out, true );
InputStream inhalt = null;
konsolenAusgabe.print("\nHallo, möchten Sie <1> eine vorhande Textdatei öffnen oder <2> eine neue erstellen? ");
int auswahl = Integer.parseInt( eingabePuffer.readLine());
if( auswahl == 1 )
{
konsolenAusgabe.println("Bitte sorgen Sie dafür, dass sich Ihre Textdatei im gleichen Verzeichnis" +
" wie auch das Javaprogramm befindet!");
konsolenAusgabe.println("Geben Sie nun bitte den Namen der Textdatei mit dem Suffix \".txt\" ein!");
dateiName = eingabePuffer.readLine();
inhalt = new FileInputStream( "F:/Eclipse Projekte/Klausur Programmierung 1 - Praxis/src/" + dateiName );
}
else
{
konsolenAusgabe.print("Wie soll Ihre Textdatei heißen? ");
dateiName = eingabePuffer.readLine() + ".txt";
File neueDatei = new File( "C:/" + dateiName );
konsolenAusgabe.println("Geben Sie bitte jetzt Ihren Text ein!");
BufferedWriter dateiSchreibPuffer = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream( neueDatei, true )) );
// FileOutputStream(String name, boolean append)
// creates an output file stream to write to the file with the
// specified name --> true, damit text an bereits vorhandenem
// angefügt wird anstatt diesen zu überschreiben
String neueEingabe = eingabePuffer.readLine();
dateiSchreibPuffer.write( neueEingabe );
dateiSchreibPuffer.newLine();
dateiSchreibPuffer.close();
}
Reader dateiInhalt = new FileReader( "C:/" + dateiName );
konsolenAusgabe.println( dateiInhalt ); // zum testlesen des inhaltes
}
}
diese version gibt bei auswahl <1> folgendes aus:
java.io.FileInputStream@182f0db
bei <2> klappt alles bis auf das auslesen und auf der konsoleausgeben. da bekomme ich ausgegeben java.io.FileReader@192d342.
selbst wenn ich aus
Reader dateiInhalt = new FileReader( "C:/" + dateiName + ".txt" );
die zeile
FileReader dateiInhalt = new FileReader( "datei.txt" );
mache, und damit auf eine sich im source folder dieses programmes befindende datei.txt verweise, wird diese nicht geöffnet.
da komm ich grad überhaupt nicht mit klar. könnt ihr mir helfen?
vielen dank schonmal im voraus ...
grüße,
tinobee
EDIT: Code nachträglich in CODE-Tags gesetzt ... (danke für den hinweis)