Java 考虑到URL/URI格式输入字符串的可能性,是否有一种将字符串转换为文件的标准方法
我希望获得字符串的最准确的Java 考虑到URL/URI格式输入字符串的可能性,是否有一种将字符串转换为文件的标准方法,java,string,file,url,uri,Java,String,File,Url,Uri,我希望获得字符串的最准确的文件类型表示,该字符串应以以下几种形式之一引用本地(现有)文件: String file0 = "/home/my_user/file.txt" String file1 = "file:///home/my_user/file.txt" String file2 = "file.txt"; // assuming that the working dir is /home/my_user. 是否有一个(准)使用标准库的单行程序,或者像ApacheCommons
文件
类型表示,该字符串应以以下几种形式之一引用本地(现有)文件:
String file0 = "/home/my_user/file.txt"
String file1 = "file:///home/my_user/file.txt"
String file2 = "file.txt"; // assuming that the working dir is /home/my_user.
是否有一个(准)使用标准库的单行程序,或者像ApacheCommons这样的通用第三方可以做到这一点
谢谢。对于示例1和3,您可以调用
新文件(x)
,它应该可以工作
至于#2,您可以创建一个URI
,然后从中创建文件。事实上,我认为它们都可能使用URI工作
String fileStr = "file:///home/my_user/file.txt";
try {
URI uri = new URI(fileStr);
File f = new File(uri);
} catch (URISyntaxException ex) { ...}
您可以为此定义自己的函数。下面给出了功能定义和测试代码:
import java.io.File;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
public class Main {
public static void main(String[] args) {
String file0 = "/Users/arvind.avinash/file.txt";
String file1 = "file:///Users/arvind.avinash/file.txt";
String file2 = "file.txt"; // assuming that the working dir is /Users/arvind.avinash.
System.out.println(getFile(file0).exists());
System.out.println(getFile(file1).exists());
System.out.println(getFile(file2).exists());
}
static File getFile(String pathOrUri) {
URI uri;
File file = null;
try {
uri = new URL(pathOrUri).toURI();
} catch (MalformedURLException e) {
return new File(pathOrUri);
} catch (URISyntaxException e) {
return new File(pathOrUri);
}
if (uri != null) {
file = new File(uri);
}
return file;
}
}
输出:
true
true
true
[更新]
以下是一个更简化的版本:
import java.io.File;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
public class Main {
public static void main(String[] args) {
String file0 = "/Users/arvind.avinash/file.txt";
String file1 = "file:///Users/arvind.avinash/file.txt";
String file2 = "file.txt"; // assuming that the working dir is /Users/arvind.avinash.
System.out.println(getFile(file0).exists());
System.out.println(getFile(file1).exists());
System.out.println(getFile(file2).exists());
}
static File getFile(String pathOrUri) {
URI uri;
try {
uri = new URL(pathOrUri).toURI();
} catch (MalformedURLException | URISyntaxException e) {
return new File(pathOrUri);
}
return new File(uri);
}
}
谢谢你的密码。如果你有时间,我想可以简化一下。谢谢你的回答。但是,不确定try{}
块试图完成什么。。。可能它甚至没有编译,或者确实编译了。