[英]Read lines from file as is in Java
我有一個文本文件,每行包含一個字符串,並且每個字符串都已經為Java格式化,這意味着所有內容都已轉義。 我嘗試使用BufferedReader,但它會轉義字符串中的每個反斜杠,從而使字符串看起來不正確(例如,“ \\” hello \\“”會顯示為“ \\\\” hello \\\\“)。無論如何要避免這種情況?
您不需要轉義文件本身的內容。 僅當您在Java代碼中鍵入String文字時。 直接從文件中讀取文件時,文件內容將按字面意義進行解釋。
換句話說,如果您的文件顯示:
"hi"
將其讀取為字符串,然后將其讀取到System.out.println
,將打印出
"hi"
如果您遇到無法打印的字符問題,則可能與編碼問題有關(您必須更具體一些,並舉一個例子)。 我總是覺得這篇文章很有啟發性: http : //www.joelonsoftware.com/articles/Unicode.html
要以某種編碼讀取文件,請使用InputStreamReader設置編碼。
但是看起來您正在閱讀源代碼,並且其中一部分包含要解釋的String。 對於特定的String,您可以將其傳遞給StringEscapeUtils.html#unescapeJava
你可以嘗試beanshell
例如,假設您有一個像這樣的文件
\\“ xyz \\”
然后
import java.io.BufferedReader;
import java.io.InputStreamReader;
import bsh.Interpreter;
public class ReadFile {
public static void main(String[] args) throws Exception{
Interpreter i = new Interpreter(); // Construct an interpreter
BufferedReader br = new BufferedReader(new InputStreamReader(ReadFile.class.getResourceAsStream("file.txt")));
String line = null;
while((line = br.readLine())!=null){
// System.out.println(line);
i.eval("foo = \""+line+"\"");
String foo = (String)i.get("foo");
System.out.println(foo);
}
br.close();
}
}
你會得到
“ xyz”
(而不是“ xyz”)
我嘗試使用BufferedReader,但它會轉義字符串中的每個反斜杠,從而使字符串看起來不正確(例如,“ \\” hello \\“”會顯示為“ \\” hello \\“)。
不,不是。 你誤會了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.