2013-03-27 48 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