0

我有一个应用程序(SWT),我需要在服务器端管理一个文件。通过管理我的意思是 3 件事,内容写入文件,对其应用读/写锁定机制TextArea. 我需要创建一个多线程服务器来实现这一点,因为我的应用程序(实际上是一个基于 Eclipse 的插件)接受多个用户。我是这个客户端服务器和套接字编程的新手,我已经阅读了一些教程,但仍然没有找到任何最佳解决方案。我不需要代码(互联网上有很多),而是需要方法或步骤来做到这一点。谢谢。

另外,我发现了一些实际上可以正常工作的服务器代码。但是没有显示所需的结果。

我想用这个文件做的是维护作者的名字。SVN 在服务器端所做的修订号和相关文件。

服务器程序:

public void onServer() throws Exception {
        String sentByClient;
        String line1 = null;
        ServerSocket socket = new ServerSocket(6789);
        while(true) {

    System.out.println("Listening...");
        Socket connectionSocket = socket.accept();
        BufferedReader inFromClient =
        new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
        DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
        sentByClient = inFromClient.readLine();

        System.out.println("Received: " + sentByClient);

        File file=new File("HistoryFile.txt");//------------------server file
        BufferedWriter writ=new BufferedWriter(new FileWriter(file));
        writ.write(sentByClient);
        writ.close();
        BufferedReader read=new BufferedReader(new FileReader(file));

        while((line1=read.readLine())!=null) {
            System.out.println(line1);

        }
        outToClient.writeBytes(line1);

                    }

    }

客户端代码:

public void onClient(String param) throws Exception {
        Socket clientSocket = new Socket("localhost", 6789);
          DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
          BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
          //sentence = inFromUser.readLine();
          sentence=param; // Here i'm sending the author name, revision details, etc from svn to my server 
          outToServer.writeBytes(sentence);
          newSentence = inFromServer.readLine();
          System.out.println("FROM SERVER: " + newSentence);
          historyArea.append(newSentence);
    }

我真正需要的是在服务器上维护一个文件并在 textArea(historyArea) 上显示文件内容。我正在将历史数据从 SVN 发送到文件。

期望的输出:

Revision Number: 1
Author: a
Time:xxxx
Changed Path:xxxx 
-------------------
Revision Number: 2
Author: a
Time:xxxx
Changed Path:xxxx
------------------
Revision Number: 3
Author: a
Time:xxxx
Changed Path:xxxx

我得到的输出只是第一次修订:

Revision Number: 1
    Author: a
    Time:xxxx
    Changed Path:xxxx 
4

1 回答 1

0

在这一行

BufferedWriter writ=new BufferedWriter(new FileWriter(file));

您正在以写入模式打开文件,因此写入操作将覆盖现有内容。而是这样做

BufferedWriter writ=new BufferedWriter(new FileWriter(file,true));

这将以附加模式打开文件。

于 2013-04-18T06:39:48.843 回答