我必须编写一个小的解析应用程序,它用一些额外的信息重写一个postscript文件。
为了达到这个目标,我只是使用带有FileReader和FileWriter的BufferedReader。 但是我遇到了一个转义字符问题(%符号)。
Java忽略了这个字符,输入文件中的“%!PS-Adobe-3.0”行在字符串中将是“!PS-Adobe-3.0”,输出文件中也是如此。
你是否有任何想法,我怎么能这样做......除了从字面上阅读:D
祝你好运
编辑: 这是代码片段......基本文件采用UTF8编码:
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(args [0]),“UTF-8”)); String line = br.readLine();
在我用以下方法测试之前: BufferedReader br = new BufferedReader(new FileReader(args [0]));
它在同样的问题上失败了 - >输入文件中的“%!PS-Adobe-3.0”在变量“line”中变为“!PS-Adobe-3.0”
答案 0 :(得分:0)
将使用您引用的代码从文件中读取%
。正如我在对这个问题的评论中所说的那样,如果角色真的存在(我希望它们是),那么问题不在于该代码,而是在代码中。或者在代码中。
来自此评论:
%!PS-Adobe-3.0 %%创作者:CompuSet版本9.4.0 %% CreationDate:5/15/2014 11:11:16 %% BoundingBox:0 0 595 842 %%页数:( atend)%% DocumentNeededResources :( atend)%% DocumentSuppliedResources :( atend)行开头的第一个%符号" %%"也将被忽略。
...我猜测你正在使用System.out.printf
输出您正在阅读的内容,但却错误地认为:
System.out.printf(line); // <=== Wrong
传入printf
的第一个字符串是格式化字符串,它可以是以%
开头的占位符。 %%
是一个特殊的&#34;占位符&#34;输出%
。
所以你并没有真正看到line
的内容。请尝试使用print
或println
代替:
System.out.println(line);
...或正确使用printf
:
System.out.printf("%s\n", line);
%s
输出一个字符串不变。