以下是我的代码的一部分
OutputStream os;
if (isWin){
os = new FileOutputStream(folder + "\" + destinationFile);
}
else{
os = new FileOutputStream(folder + "/" + destinationFile);
}
我得到"字符串文字没有通过双引号错误正确关闭"在反斜杠线。如果我删除反斜杠或将其更改为正斜杠,则错误将消失。
我该如何解决这个问题?感谢。
答案 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中,您会看到:)
"
'
\
:○)
答案 7 :(得分:-1)
避免斜杠和反斜杠:
OutputStream os = new FileOutputStream(new File(new File(folder ), destinationFile));