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

时间:2017-01-10 12:41:28

标签: java string file uri command-line-arguments

这是一个很简单的问题,我确定答案就在那里,而我根本就没有用正确的术语进行搜索。我是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进行检查以确认它是" /"如果没有,请更换它,然后简单地粘贴"文件:"在前。再次,这似乎很草率。

  • 如果用户添加" http:"?
  • ,该怎么办?
  • 如果用户指定相对于他们当前所在目录的完整路径或路径,该怎么办?
  • 内置函数验证路径是否正确?我知道file.isFile()和file.exists(),我可以很容易地检查自己。

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

1 个答案:

答案 0 :(得分:0)

你可以在java中创建一个独立于操作系统的File对象(例如Windows使用反斜杠),检查它是否存在,并使用方便的toURI()方法创建一个有效的URI对象

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