2013-03-27 44 views
0

我有一個關於文件的基本問題......看起來我被卡住了。Java套接字和文件流式傳輸

我正在創建一個服務器 - 客戶端套接字。客戶端使用迭代方式和下面的方法向服務器發送隨機數量的整數。

//BufferedWriter out = new BufferedWriter(new OutputStreamWriter (sock.getOutputStream())); 
out.write(number); 
out.flush(); 

服務器接受他們這樣的:

//BufferedReader in = new BufferedReader (new InputStreamReader (socket.getInputStream())); 
    number=in.read(); 

一切,我想要的是存儲所有這些整數服務器到文件(myfile.txt的舉例),然後我想讀這文件作爲一個字符串(包括所有整數),以便將其發送回客戶端。

任何想法?我嘗試了幾種方法,但現在我完全陷入困境,我真的不能清楚地思考......如果有人能幫我一點點,我真的很感激。

乾杯

編輯:我嘗試了這些方法至今

FileOutputStream fos = new FileOutputStream("myfile.txt"); 
DataOutputStream dos = new DataOutputStream(fos); 
dos.writeInt(number); 

然後我試着用

FileInputStream fin=new FileInputStream("myfile.txt"); 
DataInputStream dis = new DataInputStream(fin); 
    int numbers = dis.read(); 

閱讀本,但我得到的是數字0:S

+0

你可以提供一些你到目前爲止嘗試的方法的更多細節? – mthmulders 2013-03-27 11:23:14

+0

@mthmulders我更新了我原來的帖子 – 2013-03-27 11:29:18

+0

寫完數據後,你看到它是否在文件中可用? – Thihara 2013-03-27 11:30:23

回答

0

寫入文件可以這樣實現

FileOutputStream fileOutputStream = new FileOutputStream("test.txt"); 
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(fileOutputStream)); 
// Make sure to write the data as a String 
bufferedWriter.write("" + number); 
bufferedWriter.close(); 
fileOutputStream.close(); 

之後,閱讀可以這樣

FileInputStream fileInputStream = new FileInputStream("test.txt"); 
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream)); 
String line = bufferedReader.readLine(); 
number = Integer.valueOf(line); 

使用BufferedWriter的優勢來實現和BufferedReader是,你可以讀/寫字符串,並有一個人類可讀的文件。使用DataOutputStream,您將擁有一個二進制文件,並且您將自己進行數據格式轉換。

關於你的代碼示例:

dis.read(); 

將返回的字節數讀,的實際數據。你會這樣做使用

dis.readInt(); 
+0

感謝您的答案。我是否必須爲對象FileOutputStream和BufferedWriter創建新實例,或者我可以使用現有的實例? – 2013-03-27 11:50:17

+0

我會根據需要打開它們。這將確保在第一次讀取文件後修改文件時,您將始終獲取最新數據,並且該文件永遠不會被鎖定時間過長。 – mthmulders 2013-03-27 11:56:18