这也是一个Unix问题所以,这里是交易:我在Java中有一个完整的String变量,它是XML文件的内容,我想用一个命令将整个文本写入一个文件,如:< / p>
echo "<xml>
<data>
</data>
</xml>" > basic.xml
使用这种文本,unix会给出错误
我已经用属性文件做了,但是没有空格,所以它没有给我一个错误。
我还尝试用$'\ n'替换\ n字符,如:
contentStr=contentStr.replaceAll("\n", "\\$'\n'");
但JSCH给了我unix错误。
有什么想法吗?
日Thnx
阿里
答案 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());
这就是答案。无论如何排序;)