2012-12-18 50 views
0

即时制作一个客户端服务器应用程序java使用sockets 我已经实现了基本的客户端和服务器,客户端可以发送图片到服务器和服务器存储它们,但我不知道如何存储多个文件。在使用下面的代码来存储文件的那一刻,从IM客户端如何在服务器上存储多个文件java

while(true) 
    { 
     Socket connectionSocket = serverSocket.accept(); 
     try (DataInputStream receivedFromClient = new DataInputStream(connectionSocket.getInputStream()); 
       FileOutputStream saveToServer = new FileOutputStream("files/file.jpg")) 
     {  
      int i; 
      while ((i = receivedFromClient.read()) > -1) 
      { 
       saveToServer.write(i); 
      } 
     } 
    } 

这是IM如何保存一个文件接收,该文件被由服务器接收到任何新的文件覆盖。我想存储客户端发送的多个文件,我该怎么做?另外我将如何设置获得收到的文件的名称?

回答

1

将文件名参数添加到此代码块所在的方法中,该代码块将允许您传递文件名。或者使用静态计数器自动增加文件名,如果适合的话。

的问题是你每次都使用相同的文件名,因为它是硬编码在这里:

FileOutputStream saveToServer = new FileOutputStream("files/file.jpg")) 

而是要传递到FileOutputStream中的字符串应该是可变的,恩。

FileOutputStream saveToServer = new FileOutputStream(yourStringVariable)) 
+0

感谢,工作就像一个魅力:) ...不能相信我没有想到:/ ...你会如何建议我改变文件类型。从'.jpg'到'.txt'还是其他类型?我实现了'FileChooser'来接受txt,jpg和gif – Haseeb

+0

FileChooser?你的意思是javax.swing.JFileChooser?如果是这样,这里有一篇很好的文章:http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html#filters 原则上文件输出流会将它命名为任何你给它的字符串(即任何文件扩展名,或没有)。因此,如果您使用的是UI,那么您可以添加过滤器来控制支持的文件类型。 – Bizmarck

+0

是的,我正在谈论JFileChooser ...我是指在服务器上。我将如何更改给定代码中文件的扩展名。 – Haseeb

相关问题