如何在Java中读取%Character

时间:2014-05-26 11:47:08

标签: java character

我必须编写一个小的解析应用程序,它用一些额外的信息重写一个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”

1 个答案:

答案 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的内容。请尝试使用printprintln代替:

System.out.println(line);

...或正确使用printf

System.out.printf("%s\n", line);

%s输出一个字符串不变。