从用户通过命令行参数提供的字符串生成 URI

Generate URI from String provided by user via command line argument

这是一个如此简单的问题,我确信答案就在那里,只是我没有使用正确的术语进行搜索。我是 Java 的新手,使用 Java 8,我想学习如何正确处理这个问题,而不是将其组合在一起。

应用程序通过命令行接收参数。

$ MyApp /home/user/thefiletheywant.me

我试过以下方法:

// Missing Scheme, I know I can just force ("file:" + args[0]) but is that proper?
URI fileIn = new URI(args[0]);

// I've learned this is the same thing as above
URI fileIn = URI.create(args[0]);

我见过使用字符串的例子,检查 File.Separator 以验证它是“/”,如果不是,替换它,然后简单地在前面加上 "file:"。这又一次显得草率。

如果我每次都知道文件的确切位置,当然 URI.create 就可以了。但是对于未来的教育,我想知道如何正确处理这个非常简单的场景。如果在我的搜索中我只是以某种方式错过了我认为是一个简单的解决方案,请原谅我。

您可以在 java 中创建一个文件对象,它是 OS 独立的(例如 Windows 使用反斜杠),检查它是否存在,然后使用方便的 toURI() 方法,创建一个有效的 URI 对象。

File myFile = new File(args[0]);
URI fileUri = null;
if(myFile.exists()) {
    fileUri = myFile.toURI();
}