docs: public static String read( File file ) throws IOException {
          if (file == null) return "";
          StringBuilder sb = new StringBuilder();
          boolean error = false;
          Reader reader = new FileReader(file);
          try {
              int numRead = 0;
              char[] buffer = new char[1024];
              while ((numRead = reader.read(buffer)) > -1) {
                  sb.append(buffer, 0, numRead);
              }
          } catch (IOException e) {
              error = true; // this error should be thrown, even if there is an error closing reader
              throw e;
          } catch (RuntimeException e) {
              error = true; // this error should be thrown, even if there is an error closing reader
              throw e;
          } finally {
              try {
                  reader.close();
              } catch (IOException e) {
                  if (!error) throw e;
              }
          }
          return sb.toString();
      }