使用java代码从文本文件中读取单个反斜杠

时间:2016-08-11 18:32:44

标签: java escaping

这里有很多帖子,每个人都建议更改文本文件内容。 我的要求是,我正在解析一个c ++源文件。在解析期间,当我在结尾处找到反斜杠时,我可能需要将多行合并在一起。 例: char line [100] =“你好加入多行。\
                            哦,不要让我编辑CPP源文件。“;

如何从xyz.cpp文件中读取此文本,并确定该行末尾有反斜杠。 我使用FileInputReader逐行读取,但是当我在java中获取该行时,反斜杠就丢失了。

我希望您不要建议我更改我的CPP源代码以替换\ with \

提前致谢。

4 个答案:

答案 0 :(得分:0)

反斜杠是Java中的转义字符。因此,如果您想要匹配真实的反斜杠 - \,那么您必须寻找\\

您可以使用contains()indexOf()作为字符串文字。

或按字符阅读并检查条件:

if (c == '\\')

希望这有帮助!

答案 1 :(得分:0)

在最简单的级别上,您可以按新行(data.split('\n') dataString)拆分文件数据,然后检查它是否以反斜杠结尾({{1}其中line.endsWith('\\')line

答案 2 :(得分:0)

以下代码加载文件并打印每一行

import java.io.File;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class Test {


public static void main(String args[]) throws Exception{
    Scanner scan = new Scanner(new File("file.txt"));
    scan.useDelimiter("\\Z");
    String content = scan.next();
    String[] lines = content.split("\n");
    for (String value : lines) {
        System.out.println(value);
    }
}
}

我创建了一个包含以下行

的文件“file.txt”
line 1
line 2\
line 2cnt
line 3

代码将输出

line 1
line 2\
line 2cnt
line 3

要加入这些行,您可以运行以下代码

public static void main(String args[]) throws Exception{
    Scanner scan = new Scanner(new File("file.txt"));
    scan.useDelimiter("\\Z");
    String content = scan.next();
    String[] lines = content.split("\n");

    for (String value : lines) {
        if (value.endsWith("\\")) {
            value = value.substring(0, value.length()-1);
            System.out.print(value);
        } else {
            System.out.println(value);
        }
    }
}

将输出

line 1
line 2line 2cnt
line 3

根据您的评论编辑:

public static void main(String args[]) throws Exception {
    FileInputStream fileInputStream = new FileInputStream("file.txt");
    BufferedReader reader = new BufferedReader(new InputStreamReader(fileInputStream));
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
}

输出

line 1
line 2\
line 2cnt
line 3

public static void main(String args[]) throws Exception {
    FileInputStream fileInputStream = new FileInputStream("file.txt");
    BufferedReader reader = new BufferedReader(new InputStreamReader(fileInputStream));
    String line;
    while ((line = reader.readLine()) != null) {
        if (line.endsWith("\\")) {
            line= line.substring(0, line.length()-1);
            System.out.print(line);
        } else {
            System.out.println(line);
        }
    }
}

输出

line 1
line 2line 2cnt
line 3

不确定,为什么在机器上看不到反斜杠。你能发布完整的代码和文件内容吗?你在什么平台上运行它?什么是文件的编码?也许您需要将编码传递给InputStreamReader,如下所示:

BufferedReader reader = new BufferedReader(new InputStreamReader(fileInputStream, "UTF-8"));

答案 3 :(得分:0)

这是eclipse ide的编译问题,我重新启动了eclipse并进行了清理编译。现在每件事都按预期工作。谢谢你们的时间。