Basisklassen zum Modul jdk.httpserver
ulrich
2021-06-25 bc820e86a32b199c88a506753e7458e32cf27e58
Schreiben des Response-OutputStreams verfeinert
1 files modified
30 ■■■■■ changed files
src/de/uhilger/httpserver/base/HttpResponder.java 30 ●●●●● patch | view | raw | blame | history
src/de/uhilger/httpserver/base/HttpResponder.java
@@ -24,7 +24,6 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -82,23 +81,30 @@
      e.sendResponseHeaders(SC_OK, file.length());
      if(HTTP_GET.equalsIgnoreCase(e.getRequestMethod())) {
        InputStream in = new FileInputStream(file);
        OutputStream os = e.getResponseBody();
        byte[] b = new byte[4096];
        int bytesRead = in.read(b);
        //int b = in.read();
        while (bytesRead > -1) {
          os.write(b, 0, bytesRead);
          bytesRead = in.read(b);
        }
        in.close();
        os.flush();
        os.close();
        OutputStream os = e.getResponseBody();
        write(in, os);
        finish(in, os);
      }
    } else {
      sendNotFound(e, file.getName());
    }
  }
  public void write(InputStream in, OutputStream out) throws IOException {
    byte[] b = new byte[4096];
    int bytesRead = in.read(b);
    while (bytesRead > -1) {
      out.write(b, 0, bytesRead);
      bytesRead = in.read(b);
    }
  }
  public void finish(InputStream in, OutputStream out) throws IOException {
    in.close();
    out.flush();
    out.close();
  }
  /**
   * Die Header erzeugen, die unabhängig davon, ob der ganze 
   * Inhalt oder nur Teile davon ausgeliefert werden sollen, in der