2016-07-20 11 views
0

Ich habe den folgenden Code:Java Datainputstream und Filewriter Kombination

public static void main(String[] args) throws IOException { 
    // TODO code application logic here 
    String path = "C:/Users/PRATYUSH/Documents/NetBeansProjects/File/NothingSpecial.txt"; 
    FileWriter file = new FileWriter(path); 
    file.write("1.2356"); 
    System.out.println("Done check file now..."); 
    file.close(); 
    DataInputStream d = new DataInputStream(new FileInputStream(path)); 
    double data = d.readFloat(); 
    System.out.println("Data from file = " + data); 
    d.close(); 
} 

ich 2.5348867449537238E-9 als meine Antwort nach der Ausführung immer bin. Warum ist es falsch?

+0

Bitte formatieren Sie den Code in Ihrer Frage richtig, indem Sie ihn mit 4 Leerzeichen einrücken. – sidneydobber

+1

hey Sie schreiben einen String in Ihre Datei und Doppel lesen –

Antwort

0

Sie schreiben Zeichendaten und versuchen, binäre Daten zu lesen. Es macht keinen Sinn, DataInputStream zu verwenden, außer die Daten wurden mit einem DataOutputStream geschrieben. In diesem Fall verwenden Sie eine FileWriter, so dass Ihre Lösung mit einem FileReader beginnt, wahrscheinlich mit einem Scanner umwickelt.

0

Um mit DataOuputStream zu schreiben:

DataOutputStream out = new DataOutputStream(
          new FileOutputStream("file.txt")); 

    out.writeDouble(10.8); 
    out.writeChar('\t'); 
    out.writeInt(5);  
    out.writeChars(" \t ok \n"); 

out.close(); 

mit Datainputstream zu lesen:

DataInputStream in = new DataInputStream(
          new FileInputStream("file.txt")); 
try { 
    while (true) { 
     price = in.readDouble(); 
     in.readChar();  //throws out the tab 
     unit = in.readInt(); 
     in.readChar();  //throws out the tab 
     status= new StringBuffer(20); 
     char lineSep = System.getProperty("line.separator").charAt(0); 
     char chr; 
     while ((chr = in.readChar() != lineSep) { 
      desc.append(chr); 
     } 

     System.out.println("You've ordered " + unit + " units of " 
          + desc + " at $" + price); 
     total = total + unit * price; 
    }  
} catch (EOFException e) { } 
System.out.println("For a TOTAL of: $" + total); 
in.close(); 

nutzen zu können, Filewriter:

String name = "John Doe"; 
      int age = 44; 
      double temp = 26.9; 
      FileWriter fw; 
      try { 
       fw = new FileWriter(new File("mytextfile.txt")); 
       fw.write(String.format("My name is %s.",name)); 
       fw.write(System.lineSeparator()); //new line 
       fw.write(String.format("I am %d years old.",age)); 
       fw.write(System.lineSeparator()); //new line 
       fw.write(String.format("Today's temperature is %.2f.",temp)); 
       fw.write(System.lineSeparator()); //new line 
       fw.close(); 
      } catch (IOException ex) { 
       ex.printStackTrace(); 
      } 

Filereader verwenden:

FileReader fr = new FileReader("FileReaderDemo.java"); 
BufferedReader br = new BufferedReader(fr); 
String s; 
while((s = br.readLine()) != null) { 
System.out.println(s); // or you can use the wrapper classes 
} 
fr.close(); 
+0

'DataOutputStream' produziert binäre Ausgabe, so sollte es nicht in einer Datei namens .txt gespeichert werden. – EJP

+0

FileReader und FileWriter lesen und schreiben Strings. Sie haben Optionen zum Lesen und Schreiben mit DataInputStream und DataOutputStream. Wählen Sie also die Option, die Ihren Anforderungen entspricht, anstatt eine Kombination aus vier zu verwenden. –

+0

@EJP ... DataOutputStream können Sie Primitive schreiben. Es kann sehr gut aus einer Textdatei lesen –