2015-11-22 99 views
0
import java.io.DataInputStream; 
import java.io.FileOutputStream; 
import java.io.FileInputStream; 
import java.io.InputStream; 


class Myclass 
{ 
    public static void main(String args[]) 
    { 
     try{ 
       //writing data into file from byte stream i.e FileOutputStream and reading from DataInputStream  
       int data[]={99,76,65,55,99}; 
       FileOutputStream fout=new FileOutputStream("C:\\Users\\dell\\Desktop\\testingfile.txt"); 

       for(int i:data) 
       { 
        fout.write(i); 
       } 
      Myclass m=new Myclass(); 
      FileInputStream fin=new FileInputStream("C:\\Users\\dell\\Desktop\\testingfile.txt"); 
      m.readMethod(fin); 
      }catch(Exception e) 
      { 
       System.out.println("Exception caught"); 
      } 
    } 

void readMethod(InputStream obj) 
    { 
    try{ 
     DataInputStream din=new DataInputStream(obj);//noe datainputstream has only one constructor with parameter of Inputstream 
     int d; 
     while((d=din.readInt())!=-1) 
     { 
      System.out.println(d); 
     } 
    }catch(Exception E){} 

    } 

我寫整數設置爲文件testingfile.txt與FileOutPutStream.I可寫(int)方法創建了一個方法readMethod從讀取整數文件與DataInputStream中可用的方法。但從文件讀取給我不同的輸出。它不同於我寫的數據。爲什麼是我的輸出不同?任何人都可以更正我的代碼或告訴我爲什麼這樣嗎?
產量:1665941815。從文件讀取突發輸出

回答

0

空隙寫(INT B)
的指定字節寫入此文件輸出流。

在JavaSE的文檔(http://docs.oracle.com/javase/8/docs/api/java/io/FileOutputStream.html),寫入方法是用來寫一個字節,但不是int,即使它收到一個int值作爲參數。

也許你需要使用DataOutputStream來代替。

+0

非常感謝。這是否意味着即使我正在寫入int隱式它被轉換爲一個字節並寫入一個文件? – user5501265

+0

是的,是的。所以你最好要關心文件。 –