【问题标题】:Java sockets and file StreamingJava 套接字和文件流
【发布时间】:2013-03-17 11:02:22
【问题描述】:

我有一个关于文件的基本问题...看来我被卡住了。

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

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

服务器像这样接受它们:

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

All ,我希望服务器将所有这些整数存储到一个文件中(例如 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

【问题讨论】:

  • 您能详细介绍一下您目前尝试过的方法吗?
  • @mthmulders 我更新了我原来的帖子
  • 写完数据后看看文件里有没有?
  • @Thihara 是的,我可以在项目文件夹中看到它。它是空的,完全是空的。
  • @ThomnasJones 您在写入文件时是否调试并查看是否有值?完成后尝试关闭文件并重新打开...

标签: java file sockets io stream


【解决方案1】:

写文件可以这样实现

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

【讨论】:

  • 感谢您的回答。我是否必须为对象 FileOutputStream 和 BufferedWriter 创建一个新实例,或者我可以使用现有的?
  • 我会根据需要打开关闭它们。这将确保,当您第一次读取文件后更改文件时,您将始终获得最新数据,并且文件不会被锁定太久。
猜你喜欢
  • 1970-01-01
  • 2014-06-11
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多