繁体   English   中英

从文件中按Java读取行

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM