繁体   English   中英

Java套接字和文件流

[英]Java sockets and file Streaming

我对文件有一个基本问题……似乎我被卡住了。

我正在创建服务器-客户端套接字。 客户端使用迭代方式和以下方法向服务器发送随机数的整数。

//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。

可以这样写文件

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);

使用BufferedWriterBufferedReader优点是您可以读取/写入字符串,并具有可读的文件。 使用DataOutputStream ,您将拥有一个二进制文件,并且您将自己从/转换为数据格式。

关于您的代码示例:

dis.read();

将返回读取的字节数, 而不是实际数据。 您可以使用

dis.readInt();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM