verständnisproblem bei File

Status
Nicht offen für weitere Antworten.

steff3

Bekanntes Mitglied
Code:
 JFileChooser fc = new JFileChooser();
 File file = null;

      file = fc.getCurrentDirectory();		    	  
      file = fc.getSelectedFile();

  ...
  file.getAbsolutePath();
  file.getName();

wieso kann ich das mit null initialisieren? - ohne new, wenn es doch ein objekt ist

und woher weis das objekt beim zuweisen was der pfad ist und was der file name ist?
es handelt sich doch nur um den = operator und nicht file.set...
 

RaoulDuke

Bekanntes Mitglied
steff3 hat gesagt.:
Code:
 JFileChooser fc = new JFileChooser();
 File file = null;

      file = fc.getCurrentDirectory();		    	  
      file = fc.getSelectedFile();

  ...
  file.getAbsolutePath();
  file.getName();

wieso kann ich das mit null initialisieren? - ohne new, wenn es doch ein objekt ist

und woher weis das objekt beim zuweisen was der pfad ist und was der file name ist?
es handelt sich doch nur um den = operator und nicht file.set...

Das Beispiel ist in der Tat unsinnig, wo hast du das her?
 

foobar

Top Contributor
Das Beispiel macht nur Sinn, wenn man den Scope von File vergrösern will z.b. bei einem Try-Catch-Block oder einer If-Abfrage.
 
Hi,
du kannst jedes Objekt mit null initialisieren.
Deine Variablen sind eigentlich nur Objektreferenzen (implizite Zeiger auf ein Objekt). Null ist dabei einfach ein reservierter Zeiger. Er zeigt dabei auf eine Adresse, die nicht beschrieben werden kann. Anders gesagt, null zeigt eigentlich nur an, dass du auf keine Instanz zeigst.
Mit Hilfe von Null kannst du also anzeigen, dass du im Moment noch nichts zugewiesen hast. Greifst du auf eine Variable zu, die den Wert null enthält, würde eine Null-Pointer Exception ausgelöst werden, du weißt also, dass hier keine Instanz angelegt wurde. Weißt du umgekehrt einer Variablen, die nicht auf null zeigt diesen Wert zu, würde die Referenz auf das ursprüngliche Objekt herabgesetzt werden (Java merkt sich wie viele Variablen ein Objekt referenzieren). Gibt es keine gültige Referenz mehr auf dieses Objekt (speichert keine Variable mehr diese konkrete Instanz), wird die Garbage Collection diese Variable auch frei geben.
Null ist also durchaus wichtig und sinnvoll (wenn auch nicht unbedingt in diesem Beispiel. An sich sollte man beim Arbeiten mit Ressourcen einen Ressourcen-Schutzblock anlegen
 

steff3

Bekanntes Mitglied
den code habe ich mir selber zusammen gebastelt...
Code:
JFileChooser fc = new JFileChooser();
		 File file = null;
		 
		
	
		
		 fc.setFileFilter( new FileFilter()
				    {
				    public boolean accept( File f )
				      {
				        return f.isDirectory() ||
				          f.getName().toLowerCase().endsWith( ".pdf" );
				      }
				      public String getDescription()
				      {
				        return "PDF";
				      }
				    } );
		    int state = fc.showSaveDialog(null);
		    if ( state == JFileChooser.APPROVE_OPTION )
		    {
		    	  file = fc.getCurrentDirectory();	//okay	    	  
		    	  file = fc.getSelectedFile(); // aha nochmal der = operator und trotzdem sind beide strings enthalten
		    }
das mit null war mir ja soweit klar, aber ich dachte bevor ich mit dem objekt arbeite, muss ich es immer mit new initialisieren

aber viel wichtiger ist für mich immer noch die frage mit dem zuweisen des namens und des pfades
 
steff3 hat gesagt.:
das mit null war mir ja soweit klar, aber ich dachte bevor ich mit dem objekt arbeite, muss ich es immer mit new initialisieren

Stimmt so nicht ganz. Du kannst dir natürlich auch von jmd. anderen das Erzeugte Objekt holen. Einfache Beispiele wären hier das Fabrik- bzw. das Singleton-Pattern.
Code:
class A {
 ...
}

class A_Fabrik {
  public static A getNewA() {
    // erzeugen und initialisieren
    A result = new A(); //  <-- hier der new A() Aufruf
    ...
    return A; 
  }
}

Ja, jetzt kannst du ganz einfach eine A Instanz erzeugen ohne selbst new Aufzurufen.
Code:
A a = A_Fabrik.getNewA();


Natürlich kannst du auch einfach eine Instanz in einer Variablen speichern und diese dann zurückgeben. Das passiert einfach nur in dem Beispiel, dass du da oben gezeigt hattest.

steff3 hat gesagt.:
Code:
  File file = null; // jetzt gibt es keine Instanz von File, anders gesagt file ist leer, nicht da..
  ...		 
  file = fc.getCurrentDirectory();  // hier holst du dir die eine Instanz von fc (egal wo fc die herholt)
                                                // file zeigt jetzt auf genau diese Instanz

  file = fc.getSelectedFile();         // hier überschreibst du die alte Instanz. Überschreiben ist falsch gesagt
                                                // file zeigt nun auf die per getSelectedFile() Instanz. Wo die herkommt ist egal, 
                                                // du löscht den alten Wert von file und kopierst diesen neu rein. Die vorige Zeile
                                                // könntest du also auch weglassen, es wäre das gleiche Ergebnis!

Ich denke du machst hier den Fehler anzunehmen, dass ein File auch eine Datei ist. In Java ist ein File abstrakter. Du hast ein paar Eigenschaften unter anderem einen Pfad. Ob dieser ein Verzeichnis oder eine Datei meint, steht nicht fest (kannst du aber per file.isDirectory() abfragen).

Gruß Der Unwissende
 

steff3

Bekanntes Mitglied
das problem war viel einfacher
Code:
file = fc.getCurrentDirectory();		
file = fc.getSelectedFile();

ich dachte das die erste funktion den pfad ermittelt und die 2te den namen des files

und deshalb vermutete ich beide sind nötig für
file.getAbsolutePath()

und habe mich halt gewundert wie man file 2 sachen zu weisen kann und das objekt weis welche variablen es belegen soll

aber fc.getSelectedFile(); gibt gleichzeitig den pfad mit an..... womit dann alles geklärt wäre
:D
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S String Encoding Verständnisproblem Allgemeine Java-Themen 22
M Minmax Algorithmus Verständnisproblem Allgemeine Java-Themen 2
S Verständnisproblem beim Mocking Allgemeine Java-Themen 8
stroggi Bytecode LCMP - Verständnisproblem Allgemeine Java-Themen 3
H Listener Verständnisproblem Allgemeine Java-Themen 5
I Verständnisproblem mit nicht vorhandener Klasse Allgemeine Java-Themen 4
K OCJP Beispielfrage.. Verständnisproblem Allgemeine Java-Themen 2
M Java Threads - Wait Notify - Verständnisproblem Allgemeine Java-Themen 5
S iText PDF - Verständnisproblem beim Update von TableCells (Seitenzahlen) Allgemeine Java-Themen 2
B Stream Verständnisproblem Allgemeine Java-Themen 2
faulelotte Verständnisproblem Domain Driven Design Allgemeine Java-Themen 3
H Verständnisproblem mit Decimalseperator Allgemeine Java-Themen 2
G Verständnisproblem Allgemeine Java-Themen 11
A Verständnisproblem zur Hashtable Allgemeine Java-Themen 10
A Verständnisproblem Allgemeine Java-Themen 9
A Verständnisproblem mit GregorianCalendar Allgemeine Java-Themen 10
T Verständnisproblem Allgemeine Java-Themen 16
G Verständnisproblem double und float Allgemeine Java-Themen 7
R ResourceBundle-Verständnisproblem Allgemeine Java-Themen 3
M Class#getClassLoader - Verständnisproblem Allgemeine Java-Themen 3
M Verständnisproblem bei mehrdimensionalen Arrays Allgemeine Java-Themen 3
L Verständnisproblem ? Allgemeine Java-Themen 3
V Verständnisproblem Eclipse BuildPath <-> Import Jar Fi Allgemeine Java-Themen 1
W Jar-File Start nur über Terminal Allgemeine Java-Themen 13
R 11 GB File lesen ohne zu extrahieren Filedaten Bereich für Bereich adressieren dann mit Multi-Thread id die DB importieren Allgemeine Java-Themen 3
D Read JSON File Problem Allgemeine Java-Themen 9
S Umstellung von File auf Path - Probleme mit Stream Allgemeine Java-Themen 5
C jar File mehrfach aufrufen (als Windows Dienst) Allgemeine Java-Themen 5
N File Path mit Variablen angeben Allgemeine Java-Themen 1
izoards Zugriff auf gemeinsame Ressource (CSV-File) Allgemeine Java-Themen 3
S Class File Editor -> Source not found Allgemeine Java-Themen 4
F jar File ausführen Allgemeine Java-Themen 14
M File Binary Representation Allgemeine Java-Themen 1
N jar File auf Mac mit Doppelklick starten Allgemeine Java-Themen 5
O Input/Output java.io.File beenden Allgemeine Java-Themen 5
G File not found - nach dem Kompilieren Allgemeine Java-Themen 6
T Jar File zu exe... Allgemeine Java-Themen 3
M Foreign Memory API / Memory-Mapped File Allgemeine Java-Themen 0
R Delete files before creating new from temp using Java file method Allgemeine Java-Themen 1
S File lesen und schreiben Java 6 Allgemeine Java-Themen 2
T String-Manipulation beim Ablauf in Eclipse und als JAR-File Allgemeine Java-Themen 8
F Input/Output FileNotFoundException, obwohl File existiert Allgemeine Java-Themen 5
G Excel File öffnen, in Zelle schreiben, abspeichern Allgemeine Java-Themen 6
L JAR-File auf Ilias (LMS) laufen lassen Allgemeine Java-Themen 0
ralfb1105 Classpath Directory fuer Properties File Allgemeine Java-Themen 2
L File beim Kopieren in einen anderen Ordner umbenennen Allgemeine Java-Themen 6
J File in Package erstellen & lesen mit Programmstart in externe Projekt Allgemeine Java-Themen 3
I File ausführen und mein Programm bearbeiten lassen Allgemeine Java-Themen 11
A File lesen Codierung Charset Allgemeine Java-Themen 5
J .java-Dateitext Compile zur Laufzeit ohne File Allgemeine Java-Themen 15
M Key-File im selben Ordner speichern? Allgemeine Java-Themen 18
I TrueZip add file to archive Allgemeine Java-Themen 10
T Probleme mit dem Pfad zum Propertie file Allgemeine Java-Themen 7
J ftp - delete file ohne appache Allgemeine Java-Themen 8
X Klassen File-Klasse wird als Directory markiert Allgemeine Java-Themen 8
T ImageIO.read -> Can`t read input file Allgemeine Java-Themen 11
L Applet Problem "security: Trusted libraries list file not found" ? Allgemeine Java-Themen 7
C Swing File[] als klickbare links in irgendeinem Swing Element Allgemeine Java-Themen 3
H Kennt sich jemand mit Eclipse und dem Thema Jar-File aus ? Allgemeine Java-Themen 6
H Laden einer (Resourcendatei) aus einem Jar-File Allgemeine Java-Themen 17
C Authentifizierung mit java.nio.file? Allgemeine Java-Themen 5
L CSV File lesen, in ArrayList speichern und ausgeben Allgemeine Java-Themen 3
M xlsx File auslesen Exception occured Allgemeine Java-Themen 13
offi Drag and Drop mehrerer File aus Explorer in JTable Allgemeine Java-Themen 1
G Java/LibGDX File Loading Exception Allgemeine Java-Themen 2
Cromewell JavaFX FXML-File lädt unter Ubuntu nicht Allgemeine Java-Themen 7
D Java Anwendung mit dll File Allgemeine Java-Themen 5
AssELAss Log4j Logging Ausgabe für jede Klasse in seperates File Allgemeine Java-Themen 2
thet1983 Input/Output read properties file from classpath Allgemeine Java-Themen 3
J Umwandeln von URL zu File und danach kopieren geht nicht Allgemeine Java-Themen 1
J Properties file ändern Allgemeine Java-Themen 12
S Executable Jar File startet nicht unter Windows 10 Allgemeine Java-Themen 3
B Objekte anhand von Properties file Allgemeine Java-Themen 41
Dechasa Input/Output Write into File Allgemeine Java-Themen 2
N Maven ObjectMapper Error wenn das File gespeichert wird Allgemeine Java-Themen 0
H Security Manager (IIOException: Can't read input file!) Allgemeine Java-Themen 2
H File.listFiles() funktioniert nicht... Allgemeine Java-Themen 10
C Input/Output Problem bei Datei verschiebung mit File.move und Paths.get() Allgemeine Java-Themen 26
X Zeile unter einer bestimmen Zeile hinzufügen(File) Allgemeine Java-Themen 1
F Open source file übersetzen Phython -> Java Allgemeine Java-Themen 4
C file.delete() funktioniert bei zweiten aufruf nicht mehr Allgemeine Java-Themen 3
M Desktop jar File icon Ändern? Allgemeine Java-Themen 14
O Sax-Parser ließt XML-File doppelt Allgemeine Java-Themen 1
J Java Software Compare Files und Neue File erstellen Allgemeine Java-Themen 0
Thallius Custom File Chooser Allgemeine Java-Themen 1
C .jar File lässt sich nur über Konsole öffnen Allgemeine Java-Themen 1
J Java Download Filedownload File.getFileName Allgemeine Java-Themen 3
R Java .class-File-Konstrunkt mit Programm visualisieren Allgemeine Java-Themen 18
G SecurityManager/Policy-File/Reflection Allgemeine Java-Themen 0
M pdf File bzw. ausgefüllte pdf Formulare drucken Allgemeine Java-Themen 2
S Input/Output File Not Found FileReader Allgemeine Java-Themen 6
Thallius Serialisiertes File kann auf anderem Rechner nicht geladen werden Allgemeine Java-Themen 12
P Java Dynamic Web Project -> config File Allgemeine Java-Themen 1
S runnable jar file in Verbindung mit itext Allgemeine Java-Themen 3
D Variablen java.io.File zum vergleichen abspeichern Allgemeine Java-Themen 1
M File IO Klasse ... wie einbinden Allgemeine Java-Themen 6
O Freies Tool zum Jar-File obfuscaten gesucht! Allgemeine Java-Themen 5
F File.listFiles ohne .sort Allgemeine Java-Themen 6
B XML File JAXB Allgemeine Java-Themen 0
S Platzverbrauch, File oder String Allgemeine Java-Themen 14

Ähnliche Java Themen

Neue Themen


Oben