###前提・実現したいこと
C:\test\tes\sampleに
tes.xml
tes.jpg
が入っており、ここからXMLファイルだけ抜き出して
ファイル名のパス=キー
テキスト内容 =格納する値
としてMapに格納したいのですが、うまく行きません。
どなたか間違っている箇所を教えていただけませんでしょうか?
###発生している問題・エラーメッセージ
現コードでは下記のERRORが出ます
Exception in thread "main" java.nio.charset.MalformedInputException: Input length = 1 at java.nio.charset.CoderResult.throwException(CoderResult.java:281) at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:339) at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178) at java.io.InputStreamReader.read(InputStreamReader.java:184) at java.io.BufferedReader.fill(BufferedReader.java:161) at java.io.BufferedReader.readLine(BufferedReader.java:324) at java.io.BufferedReader.readLine(BufferedReader.java:389) at java.nio.file.Files.readAllLines(Files.java:3205) at java.nio.file.Files.readAllLines(Files.java:3242) at MapCreater$1.visitFile(MapCreater.java:43) at MapCreater$1.visitFile(MapCreater.java:33) at MapCreater.CreatePathAndStringListMap(MapCreater.java:33) at Main.main(Main.java:31)
###該当のソースコード
Java
1public class Main { 2 3 public static void main(String[] args) throws IOException { 4 5 String userSelect = "C:\\test\\tes\\sample"; 6 7 8 Map<Path, List<String>> filePathAndStringListMap = new HashMap<Path, List<String>>(); 9 MapCreater mp = new MapCreater(); 10 11 12 filePathAndStringListMap = mp.CreatePathAndStringListMap(userSelect, filePathAndStringListMap); 13 14 System.out.println(filePathAndStringListMap.keySet()); 15 16 } 17 18} 19 20public class MapCreater { 21 22 23 public boolean isXml(Path path) { 24 boolean b = path.getFileName().endsWith(Paths.get("xml")); 25 return b; 26 } 27 28 public Map<Path, List<String>> CreatePathAndStringListMap(String userSelectedPath, Map<Path, List<String>> fileMap) throws IOException { 29 30 31 Files.walkFileTree(Paths.get(userSelectedPath), new SimpleFileVisitor<Path>() { 32 33 public FileVisitResult visitFile(Path file, 34 BasicFileAttributes attrs) throws IOException { 35 36 if (isXml(file)) { 37 38 List<String> Lines = Files.readAllLines(file); 39 40 Path filesPath = file.toAbsolutePath().getFileName(); 41 42 43 fileMap.put(filesPath, Lines); 44 System.out.println(filesPath + "は" + Lines.hashCode() + "に格納されました"); 45 //ファイルの処理を継続 46 return FileVisitResult.CONTINUE; 47 } else { 48 return FileVisitResult.SKIP_SUBTREE; 49 50 } 51 52 } 53 }); 54 return fileMap; 55 } 56
###補足情報(言語/FW/ツール等のバージョンなど)
Java8
netBeans

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。