使用JSCH将包含多行的文本写入文件

时间:2013-09-13 16:05:24

标签: java file unix command jsch

这也是一个Unix问题所以,这里是交易:我在Java中有一个完整的String变量,它是XML文件的内容,我想用一个命令将整个文本写入一个文件,如:< / p>

echo "<xml>
        <data>
        </data>
     </xml>" > basic.xml

使用这种文本,unix会给出错误

我已经用属性文件做了,但是没有空格,所以它没有给我一个错误。

我还尝试用$'\ n'替换\ n字符,如:

contentStr=contentStr.replaceAll("\n", "\\$'\n'");

但JSCH给了我unix错误。

有什么想法吗?

日Thnx

阿里

2 个答案:

答案 0 :(得分:0)

您为replaceAll提供的示例并不完全正确。您正在用反斜杠替换回车符,后跟一个美元,然后是单引号,回车,单引号。我想你想用反斜杠,美元,单引号,反斜杠,n,单引号替换它?摆脱实际的回车并用一种转义顺序替换它?

尝试contentStr=contentStr.replace("\n", "$'\\n'");

关于replaceAll()要记住的事情是,如果你在第二个字符串中有反斜杠或美元,你可以获得有趣的结果。从文档:“注意替换字符串中的反斜杠()和美元符号($)可能导致结果与被视为文字替换字符串时的结果不同。美元符号可被视为对捕获的子序列的引用如上所述,反斜杠用于替换替换字符串中的文字字符。“在这里使用replace()是一个更好的选择。

答案 1 :(得分:0)

contentStr=contentStr.replace("\n", "\\n");
contentStr=contentStr.replace("\"", "\\\"");            

writeOperation.setCommand("printf \""+contentStr+"\" > "+source.getPath());

这就是答案。无论如何排序;)