В настоящее время я создал приложение Java, которое будет считывать значения ключей из файла ini. Значение ключа указывает на каталог, используя его абсолютный путь (пример c:\temp). Я пытаюсь использовать переменную String значения ключа, преобразовать ее в переменную File, а затем использовать эту переменную в FileReader. Проблема, с которой я сталкиваюсь, заключается в том, что служба наблюдения запускается, но когда я изменяю каталог наблюдения с помощью файла str.txt, он выдает ошибку и не проходит через оператор case case. Я также пытался использовать переменную Path в bufferedReader, поэтому вы увидите ее в операторе try, который также не сработал, я думаю, мне следовало это знать.
вот результаты:
java.io.FileNotFoundException: z:\java_apps (Access is denied)
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardWatchEventKinds;
import java.nio.file.WatchEvent;
import java.nio.file.WatchKey;
import java.nio.file.WatchService;
import org.ini4j.Wini;
public class readIni {
public static String iniPath;
public static Path directory;
public static BufferedReader br;
public static void main(String[] args) throws IOException {
try {
Wini ini = new Wini(new File("z:\\java_apps\\java.ini"));
iniPath = ini.get("filepath", "filepath");
WatchService watchService = FileSystems.getDefault().newWatchService();
directory = Paths.get(iniPath);
WatchKey watchKey = directory.register(watchService,
StandardWatchEventKinds.ENTRY_CREATE,
StandardWatchEventKinds.ENTRY_MODIFY,
StandardWatchEventKinds.ENTRY_DELETE);
while(true) {
for (WatchEvent<?> event : watchKey.pollEvents()) {
try {
//read text into buffReader from file
Path path = directory.resolve((Path)event.context());
File file = new File(iniPath);
br = new BufferedReader(new FileReader(file));
System.out.println(file);
//create empty string, read file content line by line while the line is not empty
String str = "";
String line = br.readLine();
while (line != null) {
str= line;
line = br.readLine();
//begin switch