fix(fs): use normalized relative path for mobile platform

Fix #9378
This commit is contained in:
Andelf
2023-05-17 01:02:19 +08:00
parent 51201124ff
commit c917f2e087
3 changed files with 42 additions and 14 deletions

View File

@@ -10,6 +10,8 @@ import android.net.Uri;
import java.io.*;
import java.net.URI;
import java.text.Normalizer;
import java.util.HashMap;
import java.util.Map;
import java.util.Stack;
@@ -90,8 +92,11 @@ public class FsWatcher extends Plugin {
shouldRead = true;
}
obj.put("path", Uri.fromFile(f));
obj.put("dir", Uri.fromFile(new File(mPath)));
URI dir = (new File(mPath)).toURI();
URI fpath = f.toURI();
obj.put("path", Normalizer.normalize(dir.relativize(fpath).toString(), Normalizer.Form.NFC));
obj.put("dir", Uri.fromFile(new File(mPath))); // Uri is for Android. URI is for RFC compatible
JSObject stat;
switch (event) {