[英]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.