将目标-C客户端的控制台输出写入服务器中的文件

时间:2014-11-01 00:53:50

标签: java ios server

我有一个用java编写的服务器,它监听特定的端口号。我还有一个Objective-C客户端连接到这个服务器并进行通信。沟通很好。现在,我必须从终端获取objective-c客户端的输出并输入由java服务器创建的文件。我该怎么做呢?普通的FileWriter函数似乎不起作用。以下是我所拥有的服务器的一部分。

// Get the client message
while((inputLine = bufferedReader.readLine()) != null) {
    System.out.println(inputLine);
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

    //read a line from the console
    String lineFromInput = in.readLine();
    File file = new File("./user_statistics.txt");
    if(!file.exists()){
        file.createNewFile();
    }

    //create an print writer for writing to a file
    fileWriter  = new FileWriter(file);
    //output to the file a line
    fileWriter.write(lineFromInput);
}

//close the file 
fileWriter.close();  
serverSocket.close();

1 个答案:

答案 0 :(得分:0)

首先从客户端读取一行(到目前为止一直很好),然后从控制台获取输入并尝试将其写入文件。您应该删除控制台内容并从inputLine读取:

// Get the client message
while((inputLine = bufferedReader.readLine()) != null) {
    System.out.println(inputLine);

    //read a line from the console
    File file = new File("./user_statistics.txt");
    if(!file.exists()){
        file.createNewFile();
    }

    //create an print writer for writing to a file
    fileWriter  = new FileWriter(file);
    //output to the file a line
    fileWriter.write(inputLine);
}

//close the file 
fileWriter.close();  
serverSocket.close();

顺便说一下:如果您关心效果,则应使用.read(char[] cbuf, int off, int len)的{​​{1}}方法,而不是bufferedReader。你完成它的方式,将浪费时间:

  • 检查下一行结尾的位置;
  • 创建String对象(并最终删除它们);
  • 可能会检查是否需要更改字符编码,具体取决于您的字符编码设置;
  • 使用远低于最佳尺寸的缓冲区(我认为几KB是常态)。