0

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

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

对于这种文本,unix 给出的错误是

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

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

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

但是 JSCH 给了我 unix 错误。

有任何想法吗?

谢谢

阿里

4

2 回答 2

0

您为 replaceAll 提供的示例不太正确。您正在用反斜杠替换回车符,然后是美元,然后是单引号、回车符、单引号。我认为您正在寻找用反斜杠、美元、单引号、反斜杠、n、单引号替换它?摆脱实际的回车并用某种转义序列替换它?

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

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

于 2013-09-13T16:30:38.023 回答
0
contentStr=contentStr.replace("\n", "\\n");
contentStr=contentStr.replace("\"", "\\\"");            

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

这就是答案。反正有点;)

于 2013-09-13T17:53:22.783 回答