gpt4 book ai didi

java - 获取类路径上文件的绝对路径

转载 作者:行者123 更新时间:2023-11-30 02:51:52 25 4
gpt4 key购买 nike

设置

  • 粘贴的是 Oracle example 的修改版本
  • 程序运行时,如果您现在在 path 目录中创建新文件或目录,您会看到显示的路径不正确
  • 例如,当我运行它时,它会将 path 目录中新创建的文件的绝对路径显示为 /home/hoagy/test/new_file,当文件的实际路径为 /home/hoagy/test/path/new_file

问题

  • 如何获得正确的绝对路径?

代码

package path.question;

import java.nio.file.*;
import static java.nio.file.StandardWatchEventKinds.*;
import static java.nio.file.LinkOption.*;
import java.nio.file.attribute.*;
import java.io.*;
import java.util.*;

public class WatchDir {

private final WatchService watcher;
private final Map<WatchKey,Path> keys;

@SuppressWarnings("unchecked")
static <T> WatchEvent<T> cast(WatchEvent<?> event) {
return (WatchEvent<T>)event;
}

private void register(Path dir) throws IOException {
WatchKey key = dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
keys.put(key, dir);
}

WatchDir(Path dir) throws IOException {
this.watcher = FileSystems.getDefault().newWatchService();
this.keys = new HashMap<WatchKey,Path>();
register(dir);
}

void processEvents() {
for (;;) {

WatchKey key;
try { key = watcher.take(); }
catch (InterruptedException x) { return; }

Path dir = keys.get(key);
if (dir == null) {
continue;
}

for (WatchEvent<?> event: key.pollEvents()) {
WatchEvent.Kind kind = event.kind();

if (kind == OVERFLOW) { continue; }

WatchEvent<Path> ev = cast(event);
Path name = ev.context();
Path child = dir.resolve(name);

System.out.println("Full path: " + name.toAbsolutePath().toString());
}

key.reset();
}
}

public static void main(String[] args) throws IOException {
Path dir = Paths.get("./path");
new WatchDir(dir).processEvents();
}
}

最佳答案

替换:

 //prints the "absolute path" of the name of the file 
System.out.println("Full path: " + name.toAbsolutePath().toString());

 //prints the "absolute path" of the "child" 
System.out.println("child " + child.toAbsolutePath().toString());

关于java - 获取类路径上文件的绝对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38409910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com