[英]How to read % Character in Java
我必須編寫一個小解析應用程序,該應用程序將重寫一些其他信息的postscriptfile。
為了實現該目標,我只使用了帶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”)); 字符串行= br.readLine();
在我用以下內容進行測試之前:BufferedReader br = new BufferedReader(new FileReader(args [0]));
它在同一問題上失敗->輸入文件中的“%!PS-Adobe-3.0”在變量“ line”中變為“!PS-Adobe-3.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
的第一個字符串是格式字符串,它可以以%
開頭的占位符。 %%
是輸出%
的特殊“占位符”。
因此,您實際上看不到line
的內容。 嘗試改用print
或println
:
System.out.println(line);
...或正確使用printf
:
System.out.printf("%s\n", line);
%s
輸出不變的字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.