TweakPC

Zurück   Computer Hardware Forum - TweakPC > Games und Software > Programmiersprachen

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 24.02.2006, 16:49   #1 (permalink)
Hardware Freak
 

Registriert seit: 28.03.2003
Beiträge: 8.252

redfalcon kann auf vieles stolz sein
redfalcon kann auf vieles stolz sein

Standard [Java] Problem mit FileWriter

Huhu,

in der Schule haben wir eine Klasse programmiert, die einfach eine Textdatei mit Inhalt auf die Festplatte schreibt. Nun wollte ich dieses Programm so "verbessern", dass man Dateinamen und Inhalt per Eingabe vom Nutzer festlegt. Funzt aber leider nicht. Die Datei wird einfach nicht erstellt. Lege ich Inhalt und Dateiname im Code fest, funktioniert alles. Warum aber nicht, wenn die Eingaben vom User gemacht werden sollen? Die Fehler muss ganz banal sein, da auch unser Tewi-Lehrer ewig mit mir rumprobiert hat. Die *.txt Datei wird im selben Verzeichnis erstellt werden, aus der das Programm gestartet wird.

Code:

PHP-Code:
import java.io.*;

public class 
Stream{

  public 
Stream(){

  }
  
  
//Input-Methode
  
public String stringInput(){
          
StringBuffer temp = new StringBuffer();
          
InputStreamReader ir = new InputStreamReader(System.in);
          try {
              do {
    
int i ir.read();
    if(
!= 10 && != 13)
         
temp.append((chari);
} while ( 
ir.ready()); 

          }

          catch (
IOException e) {

          }
          return 
temp.toString();



            

  }
  
  public 
void dateiSchreiben(String dateiString inhalt){

    
File fi = new File(datei);
    try{
    
//Falls Datei existiert, lösche die Datei und erstelle Neue.
    
if ( fi.exists() ) {
       
fi.delete();
       
fi.createNewFile();
    }
    
    
//Inhalt in Date schreiben.
    
FileWriter fw = new FileWriter(fi);
    
fw.write(inhalt);
    
fw.close();
    }
    catch(
IOException e){

    }


  }


  public static 
void main (String args[]){
    
String datei;  //Dateiname
    
String inhalt//Inhalt der Datei
    
    
Stream se = new Stream();
    
    
System.out.println("Dateiname im Format xyz.txt eingeben: ");
    
datei =  se.stringInput();
    
System.out.println(datei); //Nur zur Überwachung
    
System.out.println("Inhalt der Datei eingeben: ");
    
inhalt se.stringInput();
    
System.out.println(inhalt); //Nur zur Überwachung
    
    
se.dateiSchreiben(dateiinhalt);

  }


Edit: Problem gelöst. Gab wohl ein Problem mit der Eingabe. Funktionierender Code:

PHP-Code:
import java.io.*;

public class 
Stream{

  public 
Stream(){

  }
  
  
//Input-Methode
  
public String stringInput(){
          
StringBuffer temp = new StringBuffer();
          
InputStreamReader ir = new InputStreamReader(System.in);
          try {
              do {
                 
temp.append((charir.read());
             } while ( 
ir.ready());

          }

          catch (
IOException e) {

          }
          return 
temp.toString();



            

  }
  
  public 
void dateiSchreiben(String dateiString inhalt){

    
File fi = new File(datei);
    try{
    
//Falls Datei existiert, lösche die Datei und erstelle Neue.
    
if ( fi.exists() ) {
       
fi.delete();
       
fi.createNewFile();
    }
    
    
//Inhalt in Date schreiben.
    
FileWriter fw = new FileWriter(fi);
    
fw.write(inhalt);
    
fw.close();
    }
    catch(
IOException e){

    }


  }


  public static 
void main (String args[]){
    
String datei;  //Dateiname
    
String inhalt//Inhalt der Datei
    
    
Stream se = new Stream();
    
    
System.out.println("Dateiname im Format xyz.txt eingeben: ");
    
datei =  se.stringInput();
    
System.out.println(datei); //Nur zur Überwachung
    
System.out.println("Inhalt der Datei eingeben: ");
    
inhalt se.stringInput();
    
System.out.println(inhalt); //Nur zur Überwachung
    
    
se.dateiSchreiben(dateiinhalt);

  }


Geändert von redfalcon (25.02.2006 um 14:28 Uhr)
redfalcon ist offline   Mit Zitat antworten
Alt 25.02.2006, 15:29   #2 (permalink)
Polsterwaffenkampfsportle r
 
Benutzerbild von tele
 

Registriert seit: 29.10.2003
Beiträge: 14.561

tele hat eine strahlende Zukunft
tele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunft

Standard AW: [Java] Problem mit FileWriter

Hi,

sory für die späte Meldung, ich kam erst recht spät auf den Fehler.
Sicher hast du deinen Code noch nicht durch einene Debugger gejagt, oder? Dort ist mir nämlich aufgefallen, dass deine Input Methode das abschließende [enter] mit in den String reinpackt, der dann seinerseits nicht vom File Konstruktor verarbeitet werden kann. Du solltest also deinen datei String vorher noch von sonderzeichen entfernen, bzw. die \r und \n kicken.

Hier mal wie mir das aufgefallen ist:

http://img102.imageshack.us/img102/8...iter7xx.th.jpg

viel Spass noch beim Hacken,

tele

edit hier wies funktioniert:

PHP-Code:
import java.io.*;

public class 
Stream {

    public 
Stream() {
    }
    
// Input-Methode
    
public String stringInput() {
        
StringBuffer temp = new StringBuffer();
        
InputStreamReader ir = new InputStreamReader(System.in);
        try {
            do {
                
temp.append((charir.read());
            } while (
ir.ready());
        } catch (
IOException e) {
        }
        return 
temp.toString();
    }

    public 
void dateiSchreiben(String dateiString inhalt) {

        
File fi = new File(datei);
        try {
            
// Falls Datei existiert, lösche die Datei und erstelle Neue.
            
if (fi.exists()) {
                
fi.delete();
                
fi.createNewFile();
            }
            
// Inhalt in Date schreiben.
            
FileWriter fw = new FileWriter(fi);
            
fw.write(inhalt);
            
fw.close();
        } catch (
IOException e) {
        }
    }

    public static 
void main(String args[]) {
        
String datei// Dateiname
        
String inhalt// Inhalt der Datei

        
Stream se = new Stream();

        
System.out.println("Dateiname im Format xyz.txt eingeben: ");
        
datei se.stringInput();
        
System.out.println(datei); // Nur zur Überwachung
        
System.out.println("Inhalt der Datei eingeben: ");
        
inhalt se.stringInput();
        
System.out.println(inhalt); // Nur zur Überwachung
        //     entfernt die letzten beiden Charackters \r\n
        
datei datei.substring(0datei.length()-2); 
        
se.dateiSchreiben(dateiinhalt);
    }


Geändert von tele (25.02.2006 um 15:49 Uhr)
tele ist offline   Mit Zitat antworten
Alt 25.02.2006, 16:10   #3 (permalink)
Hardware Freak
 

Registriert seit: 28.03.2003
Beiträge: 8.252

redfalcon kann auf vieles stolz sein
redfalcon kann auf vieles stolz sein

Standard AW: [Java] Problem mit FileWriter

Zitat:
Zitat von tele
Dort ist mir nämlich aufgefallen, dass deine Input Methode das abschließende [enter] mit in den String reinpackt, der dann seinerseits nicht vom File Konstruktor verarbeitet werden kann. Du solltest also deinen datei String vorher noch von sonderzeichen entfernen, bzw. die \r und \n kicken.
Find ich aber seltsam. Ich hatte nämlich mit datei.length noch nachgesehen, ob nicht doch noch was hintendran gehängt wird; und da konnte man nix von der Newline sehen. Oder werden Escape-Seqenze da nicht mitgezählt? Danke anyway, deine Lösung gefällt mir besser.
redfalcon ist offline   Mit Zitat antworten
Alt 26.02.2006, 10:45   #4 (permalink)
Polsterwaffenkampfsportle r
 
Benutzerbild von tele
 

Registriert seit: 29.10.2003
Beiträge: 14.561

tele hat eine strahlende Zukunft
tele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunft

Standard AW: [Java] Problem mit FileWriter

Mir sind grad nochn paar Gedanken zu deinem Problem gekommen:

1. meine Lösung funktioniert nur unter Windows - wenn du es also richtig machen willst, würde ich dir nahelegen, schon in der Input Methode den abschließenden Zeilenumbruch (also \n\r unter windows und \r unter unix-like) abzufangen, da es ja nicht Aufgabe der anderen Methode ist.

2. mich wundert grade, dass das überhaupt nötig ist, da du ja
PHP-Code:
if(!= 10 && != 13
drin stehen hast - debug mal drüber inwiefern das sinnvoll ist

Gruß

tele
tele ist offline   Mit Zitat antworten
Antwort

Stichworte
filewriter, java, problem


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist aus.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Java Problem Michael2804 Windows & Programme 6 20.02.2013 22:06
[Java] Drucken mit Java ? [Gelöst] TH€_BR@!N Programmiersprachen 0 09.02.2011 19:51
Java Tutorial Problem k4Ku Programmiersprachen 15 02.10.2009 14:56
Mp3 player für Java Muffdog Notebooks, Laptops, PDAs, Handy usw. 1 24.01.2008 17:41
Problem mit Java Machine,brauche install.exe BlackMoon Windows & Programme 11 01.03.2004 09:37


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:59 Uhr.




Powered by vBulletin® Version 3.8.10 (Deutsch)
Copyright ©2000 - 2022, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.
Impressum, Datenschutz Copyright © 1999-2015 TweakPC, Alle Rechte vorbehalten, all rights reserved