• 胖胖胖
    2019-10-04
    private static File createDirs() {
            List<String> pathList = new ArrayList<>();
            while (true) {
                System.out.println("请输入文件路径,如果为空则结束");
                String path = scanner.nextLine();
                if (path.isBlank()) {
                    break;
                }
                pathList.add(path);
            }
            return createDir(pathList.toArray(new String[0]));
        }

    老师,这部分代码最后new String[0]一个0长度的数组传入,不太理解
    展开

    作者回复:
    这个确实别扭。原因是范型是类型擦出的。想要一个String类型的数组,但是在运行时并不能得到List的范型类型(也就是String)。

    这个长度为0的数组的作用只是传递一个类型过去。

    
    
  • 小鹏
    2019-08-05
    老师,File.separator 好像不是什么地方都可以用。比如在 JDBC 获取数据库连接对象,也就是如下代码这里:
    //database 是数据库名称, user 和 password 分别是用户名和密码
    Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/database", "user", "password");

    不可以改成:
    Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306" + File.separator + "database", "user", "password");

    后来我打印了一下 File.separator,手上这台电脑是 Win10 的,发现出来的结果是“\“,而不是代码里的”/“,而我本来以为 File.separator 会自动转化成”/“。

    我想问一下,这个 File.separator 的使用场景是什么?在 JDBC 获取数据库连接对象的这段代码里,是不是不需要考虑不同系统下分隔符有所不同的问题?
    展开

    作者回复: File.separator 就是文件系统的路径分割符。它和数据库里的分隔符是不一样的。数据库连接串的分隔符和操作系统是无关的。但是文件系统的路径分隔符在不同的操作系统可能是不一样的。

    
    
我们在线,来聊聊吧