package de.uhilger.avdirektor.handler; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.nio.charset.StandardCharsets; import java.util.logging.Logger; /** * * @author ulrich */ public class FileHandler implements HttpHandler { private static final Logger logger = Logger.getLogger(FileHandler.class.getName()); private final String basePath; public FileHandler(String basePath) { this.basePath = basePath; } @Override public void handle(HttpExchange t) throws IOException { String ctxPath = t.getHttpContext().getPath(); String uriPath = t.getRequestURI().getPath(); String fName = uriPath.substring(ctxPath.length()); if(fName.endsWith("/")) { fName += "index.html"; } OutputStream os = t.getResponseBody(); File file = new File(basePath, fName); if(file.exists()) { t.sendResponseHeaders(200, file.length()); InputStream in = new FileInputStream(file); int b = in.read(); while(b > -1) { os.write(b); b = in.read(); } in.close(); } else { String response = fName + " not found."; byte[] bytes = response.getBytes(StandardCharsets.UTF_8); t.sendResponseHeaders(404, bytes.length); os.write(bytes); } os.flush(); os.close(); } }