反斜杠的字符串文字未正确关闭错误

时间:2015-08-06 09:43:24

标签: java

以下是我的代码的一部分

OutputStream os;
    if (isWin){
        os = new FileOutputStream(folder + "\" + destinationFile);
    }
    else{
        os = new FileOutputStream(folder + "/" + destinationFile);
    }

我得到"字符串文字没有通过双引号错误正确关闭"在反斜杠线。如果我删除反斜杠或将其更改为正斜杠,则错误将消失。

我该如何解决这个问题?感谢。

8 个答案:

答案 0 :(得分:7)

最好将File api用于分隔符,因此您无需检查它是什么操作系统:

os = new FileOutputStream(folder + File.separatorChar + destinationFile);

答案 1 :(得分:3)

您应该使用:

"\\"

而不是:

"\"

在:

os = new FileOutputStream(folder + "\" + destinationFile);

否则,您正在反对"字符。

答案 2 :(得分:2)

您应该使用File.separator代替\/

答案 3 :(得分:2)

多种解决方法:

    // Fix the '\'
    if (isWin) {
        os = new FileOutputStream(folder + "\\" + destinationFile);
    } else {
        os = new FileOutputStream(folder + "/" + destinationFile);
    }
    // Avoid using path separator
    os = new FileOutputStream(new File(folder, destinationFile));
    // OS agnostic
    os = new FileOutputStream(folder + File.separator + destinationFile);

答案 4 :(得分:1)

\是一个符号,它是编译过程的一部分(在Java中有很多用途),因此如果要求它的字面值,必须进行转义。巧合的是,\也是转义序列字符。

在代码中使用真实\(反斜杠)的最终解决方案是逃避它,即"\\"将输出\

os = new FileOutputStream(folder + "\\" + destinationFile);

答案 5 :(得分:0)

您需要将\转义为\\

os = new FileOutputStream(folder + "\\" + destinationFile);

答案 6 :(得分:0)

我猜您需要将\/放入此字符串中。 有问题 - 当你在字符串中使用\"时,会打印"字符,你需要"转义"你需要的角色 - 在这种情况下你需要逃离\,所以你有解决方案

 os = new FileOutputStream(folder + "\" + destinationFile);

请尝试将其粘贴到system.out中,您会看到:)

  • " \ n" - 新行
  • " \ t" - 标签
  • " " "错误
  • " \" " - 打印"
  • " ' " - 打印'
  • " \" - 打印\

:○)

答案 7 :(得分:-1)

避免斜杠和反斜杠:

OutputStream os = new FileOutputStream(new File(new File(folder ), destinationFile));