我有一种方法可以检查操作系统类型并根据操作系统类型返回合适的路径。此路径由另一种方法使用,该方法接受此路径并将文件保存到帽子位置。现在,如果操作系统不是Windows,Linux或Mac,则该方法返回null
。问题是这个null
被视为一个字符串,null
被添加到保存文件的名称中,例如;nullFile.txt并将其保存在存储程序的位置。我该怎么做才能防止这种情况发生?
public static String checkOS() {
String store = "";
String OS = System.getProperty("os.name").toLowerCase();
if(OS.indexOf("win") >= 0){
store = "C:/";
} else if(OS.indexOf("nix") >= 0 || OS.indexOf("nux") >= 0 || OS.indexOf("aix") > 0 ){
store = "/home/";
} else if(OS.indexOf("mac") >= 0){
store = "/home/";
} else{
return null;
}
return store;
}
你没有显示代码,但你可能正在做
String filename = checkOS() + "File.txt";
在字符串串联中,null
值将转换为字符串"null"
,因此您必须编写显式null
检查。
String osName = checkOS();
String fileName;
if (osName == null)
// do whatever you need to do
else
filename = checkOS() + "File.txt";
至于从 checkOS
返回空字符串而不是 null 的选项,这是一种可能性,但无论哪种情况,checkOS
的调用者都需要测试结果,因为我确信您想为这种情况做一些不同的事情。 null
回报是最通用的选择。