1.1 --- a/src/de/uapcore/sudoku/DocumentHandler.java Sat Jan 26 19:34:31 2013 +0100 1.2 +++ b/src/de/uapcore/sudoku/DocumentHandler.java Sun Jan 27 15:03:57 2013 +0100 1.3 @@ -26,10 +26,15 @@ 1.4 1.5 package de.uapcore.sudoku; 1.6 1.7 +import java.io.BufferedReader; 1.8 import java.io.BufferedWriter; 1.9 +import java.io.FileInputStream; 1.10 import java.io.FileOutputStream; 1.11 import java.io.IOException; 1.12 +import java.io.InputStreamReader; 1.13 import java.io.OutputStreamWriter; 1.14 +import java.util.regex.Matcher; 1.15 +import java.util.regex.Pattern; 1.16 1.17 /** 1.18 * 1.19 @@ -43,7 +48,34 @@ 1.20 if (!isFilenameSet()) { 1.21 throw new IOException("no filename supplied"); 1.22 } 1.23 - // TODO: implement 1.24 + int row = 0; 1.25 + try (BufferedReader in = new BufferedReader( 1.26 + new InputStreamReader(new FileInputStream(filename)))) { 1.27 + Pattern pat = Pattern.compile("^\\s*(?:[1-9_] ){8}[1-9_]\\s*$"); 1.28 + String line; 1.29 + while ((line = in.readLine()) != null) { 1.30 + if (line.matches("^\\s*$")) { 1.31 + continue; 1.32 + } 1.33 + Matcher m = pat.matcher(line); 1.34 + if (m.matches()) { 1.35 + String c[] = line.trim().split(" "); 1.36 + if (c.length != 9) { 1.37 + break; 1.38 + } 1.39 + for (int i = 0 ; i < 9 ; i++) { 1.40 + field.setCellValue(i, row, 1.41 + c[i].equals("_") ? 0 : Integer.valueOf(c[i])); 1.42 + } 1.43 + row++; 1.44 + } else { 1.45 + break; 1.46 + } 1.47 + } 1.48 + if (row != 9) { 1.49 + throw new IOException("Kein Sudoku-Feld enthalten!"); 1.50 + } 1.51 + } 1.52 } 1.53 1.54 public void save(Field field) throws IOException {