2017-01-09 5 views
0

は私がコードの下に使用しています。このためにフォーマットのJava BufferedWriterのファイルの内容は

define host { 
    host_name      test.testing.local 
    alias       Server 1 
    address       192.168.1.111 
    check_command     check-host-alive 
    max_check_attempts    10 
    check_interval     5 
    retry_interval     5 
    active_checks_enabled   1 
    passive_checks_enabled   1 
    check_period     24x7 
    register      1 
} 

の下でなければなりません.cfgの延長し、このファイルの内容を一つのファイルを作成したい空である

@POST 
@Consumes("application/x-www-form-urlencoded") 
@Path("/addNewHost") 
public Response AddNewHost(String json) { 
    JSONObject returnJson = new JSONObject(); 

    try { 
     JSONObject innerJsonObj = new JSONObject(json); 
     HostObj hostObj = new HostObj(); 
     hostObj.hostname = innerJsonObj.getString("hostname"); 
     hostObj.ipaddress = innerJsonObj.getString("ipaddress"); 
     hostObj.alias = innerJsonObj.getString("alias"); 
     hostObj.check_command = innerJsonObj.getString("check_command"); 
     hostObj.notification_period = innerJsonObj.getString("notification_period"); 
     hostObj.max_check_attempts = innerJsonObj.getInt("max_check_attempts"); 
     hostObj.active_checks_enabled = innerJsonObj.getInt("active_checks_enabled"); 
     hostObj.passive_checks_enabled = innerJsonObj.getInt("passive_checks_enabled"); 
     hostObj.register = innerJsonObj.getBoolean("register"); 
     hostObj.chIntervalInMinutes = innerJsonObj.getInt("chIntervalInMinutes"); 
     hostObj.retryIntervalInMinutes = innerJsonObj.getInt("retryIntervalInMinutes"); 
     hostObj.contact_groups = innerJsonObj.getString("contact_groups"); 
     hostObj.check_period = innerJsonObj.getString("check_period"); 

     String filename = hostObj.ipaddress.replace(".", ""); 
     Properties propFile = LoadProp.getProperties(); 
     BufferedWriter writer = Files.newBufferedWriter(Paths.get(propFile.getProperty(Constants.filepath) + filename + ".cfg")); 
     writer.write("define host {\n"); 
     writer.write("\thost_name\t" + hostObj.hostname + "\n"); 
     writer.write("\talias\t" + hostObj.alias + "\n"); 
     writer.write("\taddress\t" + hostObj.ipaddress + "\n"); 
     writer.write("\tcheck_command\t" + hostObj.check_command + "\n"); 
     writer.write("\tmax_check_attempts\t" + hostObj.max_check_attempts + "\n"); 
     writer.write("\tcheck_interval\t" + hostObj.chIntervalInMinutes + "\n"); 
     writer.write("\tretry_interval\t" + hostObj.retryIntervalInMinutes + "\n"); 
     writer.write("\tactive_checks_enabled\t" + hostObj.active_checks_enabled + "\n"); 
     writer.write("\tpassive_checks_enabled\t" + hostObj.passive_checks_enabled + "\n"); 
     writer.write("\tcheck_period\t" + hostObj.check_period + "\n"); 
     writer.write("\tregister\t" + hostObj.register + "\n}"); 

     returnJson.put("success", true); 
    } catch (Exception e) { 
     JSONObject errorJson = new JSONObject(); 
     errorJson.put("success", false); 
     errorJson.put("error", errorMsg); 
     return Response.ok(errorJson.toString()).header("Access-Control-Allow-Origin", "*").build(); 
    } 

    return Response.ok(returnJson.toString()).header("Access-Control-Allow-Origin", "*").build(); 
} 

しかし、これを実行すると、ファイルが空のデータで作成されるという問題があります。 この問題を解決するために手伝ってください。

JavaEclipse Mars 1を使用しています。

+5

でライターをクローズする必要があります。 –

+2

ライターをフラッシュしてみましたか? – Mureinik

+1

あなたのEclipseが警告の問題についてあなたに話したことに気付きましたか? – Holger

答えて

1

は、あなたは**常に**あなたのライターを閉じることを確認してみてください - と、リソース文を使用し、フラッシュ

writer.flush(); 
writer.close(); 
+4

ライターを閉じると、実際にはそれがフラッシュされます。 –

+0

@JBNizet私は自分のコードで\ t \ nを使用していることがわかります。では、私の形式でファイルを生成する他の簡単な方法はありますか? – user3441151

関連する問題