[英]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);
使用BufferedWriter
和BufferedReader
优点是您可以读取/写入字符串,并具有可读的文件。 使用DataOutputStream
,您将拥有一个二进制文件,并且您将自己从/转换为数据格式。
关于您的代码示例:
dis.read();
将返回读取的字节数, 而不是实际数据。 您可以使用
dis.readInt();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.