InputStream inputStream 通过流获取文件相对路径
时间: 2023-10-25 14:49:42 浏览: 155
Java获取文件的路径及常见问题解决方案
要通过流获取文件的相对路径,你可以使用`InputStream`的`getAbsolutePath()`方法。这个方法将返回文件的绝对路径,然后你可以使用`File`类的`getParent()`方法来获取文件的父目录路径,最后使用`Paths`类的`relativize()`方法来计算相对路径。
以下是一个示例代码:
```java
import java.io.File;
import java.io.InputStream;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Main {
public static void main(String[] args) {
InputStream inputStream = Main.class.getResourceAsStream("example.txt");
File file = new File(inputStream.getClass().getProtectionDomain().getCodeSource().getLocation().getPath());
String absolutePath = file.getAbsolutePath();
String parentPath = file.getParent();
Path absolutePathObj = Paths.get(absolutePath);
Path parentPathObj = Paths.get(parentPath);
Path relativePath = parentPathObj.relativize(absolutePathObj);
System.out.println(relativePath);
}
}
```
在上面的示例中,假设要获取名为`example.txt`的文件的相对路径。首先,我们使用`getResourceAsStream()`方法来获取文件的`InputStream`。然后我们使用`getProtectionDomain().getCodeSource().getLocation().getPath()`方法来获取文件的绝对路径。接下来,我们通过`File`类获取文件的父目录路径。最后,我们使用`Paths`类的`relativize()`方法来计算相对路径,并打印输出。
请注意,这里假设`example.txt`文件在与该代码文件相同的目录下。如果文件不在相同的目录下,你需要调整代码来获取正确的相对路径。
阅读全文