簡體   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