- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 10

Thema: Java-Programmierung Frage

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von White_Fox
    Registriert seit
    04.10.2011
    Beiträge
    1.473

    Java-Programmierung Frage

    Anzeige

    Praxistest und DIY Projekte
    Mahlzeit

    Ich mache meine ersten Geh-Versuche mit Swing und Dateien.
    Ich habe erfolgreich ein Programm erstellt, bei dem der nutzer einen Pfad und einen Dateinamen eingeben kann, und das Programm erstellt das Verzeichnis mit der Datei (alles Netbeans-Kommandozeile).

    Jetzt möchte ich das gleiche in einem Fenster realisieren, aber Java weigert sich einen Ordner anzulegen. Kann mir da mal jmd. auf die Sprünge helfen?

    Code:
        private void OkButtonActionPerformed(java.awt.event.ActionEvent evt) {                                         
            
            Path_tmp = FilePath_User.getText();
            Meldung.setText(Path_tmp);
            File UserFile = new File(Path_tmp);
       
                UserFile.mkdirs();
        }
    Das Programm selber hat ein Textfeld und einen OK-Button (unter anderem, ich wollte der Übersicht wegen nicht den gesamten Code posten). Die Texteingabe funktioniert, der eingegebene Text erscheint korrekt auf dem Label Meldung. Path_tmp wurde als globaler String definiert.
    Weiß irgendwer, warum Java die Kooperation verwehrt?

  2. #2
    shedepe
    Gast
    Hallo,
    werden denn irgendwelche Exceptions geworfen ? Du hast einen validen Pfad angegeben ? Darfst du an die Stelle vom Dateisystem mit normalen Benutzerrechten schreiben ? Du kannst auch abfragen ob das Directory erstellen erfolgreich war, in dem du den Rückgabewert von mkdirs() abfragst.

    Noch ein kleiner Hinweis zu Benennung. Ich habe es mir bei Oberflächen angewöhnt, den Steuerelementen einen entsprechenden Präfix zu verpassen. Also tbMeineTextBox Für eine Textbox. Usw. Das macht den Zugriff auf die Elemente einfach übersichtlicher.

    - - - Aktualisiert - - -

    Hallo,
    werden denn irgendwelche Exceptions geworfen ? Du hast einen validen Pfad angegeben ? Darfst du an die Stelle vom Dateisystem mit normalen Benutzerrechten schreiben ? Du kannst auch abfragen ob das Directory erstellen erfolgreich war, in dem du den Rückgabewert von mkdirs() abfragst.

    Noch ein kleiner Hinweis zu Benennung. Ich habe es mir bei Oberflächen angewöhnt, den Steuerelementen einen entsprechenden Präfix zu verpassen. Also tbMeineTextBox Für eine Textbox. Usw. Das macht den Zugriff auf die Elemente einfach übersichtlicher.

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von White_Fox
    Registriert seit
    04.10.2011
    Beiträge
    1.473
    Ja...mit den Pfaden stimmt alles, das Programm soll den ja erstellen. Die nötigen Rechte hat Java auch.
    Ich habe das Programm zwischendurch auch prüfen lassen ob es ein Verzeichnis erstellt hat, das endete aber immer negativ.
    Ich muß aber zugeben, dass ich auf Exceptions verzichtet habe, da ich die Thematik noch einigermaßen verwirrend finde. Das ganze Konzept der Objektorientiertheit richtig zu durchsteigen fällt mir etwas schwer.

    Das ist das Programm, mit dem ich die Methoden mkdirs und createNewFile vorher in der Konsole ausprobiert habe, es funktioniert wie gewünscht.

    Code:
    import java.io.*;
    import java.util.*;
    
    public class Dateien{
        public static Scanner Eingabe = new Scanner(System.in);
            
        public static void main(String[]args){
            String FilePath;
            String FileName;
            System.out.println("Dateipfad eingeben:");
            FilePath = Eingabe.nextLine();
            System.out.println("Dateinamen eingeben:");
            FileName = Eingabe.nextLine();
            
            File Testpath = new File(FilePath);
            File Testfile = new File(FilePath +File.separator +FileName);
            
            try {
                Testpath.mkdirs();
                Testfile.createNewFile();
            }
            
            catch(IOException e){
                    e.printStackTrace();
                    }
            
            if(Testfile.exists())
                System.out.println("Datei angelegt");
            else
                System.out.println("Datei nicht angelegt");
        }    
    }

  4. #4
    shedepe
    Gast
    Mit validem Pfad meinte ich. Richtige Trennelemente, vorhandenes Laufwerk, usw. Im Zweifelsfall häng dich doch mal mit dem Debugger rein. Der sollte dann schon bei eventuellen Exceptions anhalten.
    Was ich mit abfragen meinte war:
    Code:
    if(Tastpath.mkdirs())
    {
       //Wenn das anlegen erfolgreich war
    }
    Bei den Standardfunktionen kannst du außerdem nicht auf Exceptions verzichten. Wenn etwas fehlschlägt werfen die eine Exception. Ansonsten kannst du ja mal auf Stackoverflow.net schauen ob jemand mal ein ähnliches Problem hatte.

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von White_Fox
    Registriert seit
    04.10.2011
    Beiträge
    1.473
    Pfade, die ich ausprobiert habe, waren immer C:\irgendein Ordnername\irgendeindateiname.

    Ich werde das mal mit einer Exception ausprobieren. Mal schauen was dann daraus wird...danke jedenfalls.

    - - - Aktualisiert - - -

    Eine Frage noch:
    Muß ich, wenn ich ein neues Verzeichnis anlegen will, immer mit zwei File-Objekten arbeiten? Also eines für das Verzeichnis und einem für die eigentliche Datei, sowie ich es in dem einen Programm gemacht habe?

    Soweit ich es sehen kann lässt mir die Methode mkdirs() keine andere Wahl, da sie ein Verzeichnis mit dem Dateinamen erstellen würde, andererseits finde ich das Arbeiten mit zwei File-Objekten und dem damit verbunden Rumgerödel, den Pfad-String in zwei Strings aufzuteilen, etwas umständlich.

    Geht das nicht einfacher?

    - - - Aktualisiert - - -

    Ok...ein Fortwschritt, aber noch immer kein Erfolg.

    Das Programm sieht jetzt folgendermaßen aus:
    Code:
    private void OkButtonActionPerformed(java.awt.event.ActionEvent evt) {                                         
            // TODO add your handling code here:
            File TestDatei = new File(Eingabe_User.getText());
            
            try{
                File TestDateiPfad = new File(TestDatei.getParent());
                TestDateiPfad.mkdirs();
                if(TestDateiPfad.exists()==true){
                    Testdisplay1.setText("Verzeichnis angelegt:");  //Testdisplay1+2 = Label
                    Testdisplay2.setText(TestDatei.getParent());    //zwecks Fehlerfindung
                }
                TestDatei.createNewFile();
            }
            catch(IOException e){
                Testdisplay1.setText(e.getMessage());
            }
            
        }
    Jetzt gibt mir die Exception folgenden Fehler aus:
    "Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch."

    Was hat das zu bedeuten? Ich geb den Dateinamen so, wie unter Windows üblich, an. Ich kan auch nicht erkennen dass der String irgendwo verändert wird, von .getParent, das den übergeordneten Verzeichnisnamen liefern soll, mal abgesehen.

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von White_Fox
    Registriert seit
    04.10.2011
    Beiträge
    1.473
    So...nun bin ich vollkommen verwirrt.

    Ohne etwas zu ändern hat das Programm zwischendurch mal funktioniert. Ich habe lediglich anstatt mkdirs() kurz mkdir() probiert, und es dann wieder geändert. Das Programm sagt "Verzeichnis angelegt" und die Datei war da.

    Jetzt habe ich Netbeans neu gestartet, und es funktioniert wieder nicht, die Exception wird geworfen. Ich habe dann mal aus Spaß C;\ (Semikolion statt Doppelpunkt) eingetippt, und das Proramm meint, die Datei erstellt zu haben. Im Windows-Explorer kann ich sie jedoch -richtigerweise- nicht finden.

    Was ist da los?

  7. #7
    shedepe
    Gast
    Könntest du mal bitte die Excpetion posten ? mkir erstellt nur das TopMost Verzeichnis und keinen Directory Tree im Gegensatz zu mkdirs.
    Ansonsten empfehle ich dir mal die Dokumentation der File Klasse:
    http://docs.oracle.com/javase/7/docs...a/io/File.html
    Und weiterhin das Galileo Java Tutorial:
    http://openbook.galileocomputing.de/...sel_16_001.htm
    Vllt fällt dir ja dabei auf was du falsch gemacht hast.
    Ich selber kann dir ansonsten nciht mehr so viel weiterhelfen, da ich schon vor Jahren auf C# / .Net umgestiegen bin.

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von White_Fox
    Registriert seit
    04.10.2011
    Beiträge
    1.473
    Die Exception lautet:
    Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.

    Ich habe jetzt mal in einem anderen Forum nachgefragt. Um Antworten bin ich trotzdem sehr dankbar.

  9. #9
    shedepe
    Gast
    Achso. Du hast als Trenncharakter auch "\\" verwendet ? Mit nur einem Backslash wird das als Escape Charakter angesehn. So wie bei C++ auch.

  10. #10
    Erfahrener Benutzer Roboter Genie Avatar von White_Fox
    Registriert seit
    04.10.2011
    Beiträge
    1.473
    Nein...das funktioniert auch mit einem \. Wenn ich als Pfadtrenner \\ verwende nimmt er eines davon weg. Zumindest in der aktuellen Version macht Java das so.

    Ich habe jetzt aber den Fehler gefunden. Ich habe im Textfeld versehentlich ein Leerzeichen reingemacht. Anstatt also C:\ hat Java immer _C:\ gelesen, kein Wunder dass der gemeckert hat. Ich habe das gerade zufällig gemerkt, als ich deinen Vorschlag mit den \\ ausprobieren wollte und das komplette Textfeld gelöscht habe.

    Oh man, so einen Fehler muß man erstmal finden...vielen Dank für deine Bemühungen mir zu helfen shedepe.

Ähnliche Themen

  1. Frage zu TWI-Programmierung
    Von yvuu im Forum Assembler-Programmierung
    Antworten: 1
    Letzter Beitrag: 05.04.2012, 22:39
  2. [ERLEDIGT] Frage zu serieller HV-Programmierung
    Von Henry im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 21.08.2009, 16:21
  3. Frage an die Java-Profis
    Von pinsel120866 im Forum Open Source Software Projekte
    Antworten: 8
    Letzter Beitrag: 04.04.2009, 17:16
  4. Programmierung mit Java
    Von simplybb im Forum Software, Algorithmen und KI
    Antworten: 17
    Letzter Beitrag: 26.04.2006, 13:04
  5. Java: Roboter Programmierung [im Allgemeinen]
    Von java-robotik im Forum Software, Algorithmen und KI
    Antworten: 8
    Letzter Beitrag: 20.06.2005, 18:40

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad