ここ数週間、単純な Java サーバーを作成してきました。
最初に、サーバーを起動した場所に基づいてファイルシステムを表示したいと思いました。たとえば、src
ディレクトリでサーバーを起動し、ブラウザを開き、localhost:5555 に移動すると、.xml に含まれるファイルとディレクトリが表示されsrc
ます。それぞれがリンクされます。そして、私はそれがうまくいきました。
ディレクトリをクリックすると、その内容が表示されます (先ほど述べたように)。ファイルをクリックすると、ファイルが読み取られ、そのファイルがプレーン テキストで表示されます。画像をクリックすると、その画像が提供されます。これはすべてブラウザで行われ、戻るボタンを使用して、以前に表示していたディレクトリ リストまたはファイルに戻ることができます。これも問題なく動作し、外部ライブラリを使用しません。
これは、テキストファイルを読み取るために使用しているコードです(リーダーを使用):
private String readFile() {
BufferedReader reader;
String response = "";
try {
FileReader fileReader = new FileReader(requestedFile);
reader = new BufferedReader(fileReader);
String line;
while ((line = reader.readLine()) != null) {
response += line + "\n";
}
reader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return response;
}
これは、画像を提供するために使用しているコードです (リーダーではなく入力ストリーム):
public byte[] getByteArray() throws IOException {
byte[] byteArray = new byte[(int) requestedFile.length()];
InputStream inputStream;
String fileName = String.valueOf(requestedFile);
inputStream = new BufferedInputStream(new FileInputStream(fileName));
int bytesRead = 0;
while (bytesRead < byteArray.length) {
int bytesRemaining = byteArray.length - bytesRead;
int read = inputStream.read(byteArray, bytesRead, bytesRemaining);
if (read > 0) {
bytesRead += read;
}
}
inputStream.close();
FilterOutputStream binaryOutputStream = new FilterOutputStream(outputStream);
byte [] binaryHeaders = headers.getBytes();
byte [] fullBinaryResponse = new byte[binaryHeaders.length + byteArray.length];
System.arraycopy(binaryHeaders, 0, fullBinaryResponse, 0, binaryHeaders.length);
System.arraycopy(byteArray, 0, fullBinaryResponse, binaryHeaders.length, byteArray.length);
try {
binaryOutputStream.write(fullBinaryResponse);
binaryOutputStream.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
私が今試みているのは、PDFを提供することです。ディレクトリの 1 つに PDF があり、それをクリックすると、その PDF が開きます (ブラウザが使用するデフォルトのリーダーで)。
私はこのトピックをグーグルで検索し、1日か2日いくつか試してみましたが、理解できないようです. 現在のコードで PDF をクリックすると、ブラウザが PDF を開いているように見えますが、テキストが表示されないのは奇妙です。これは、PDF リンクをクリックしたときに見慣れている標準のブラウザー内 PDF ビューアーです。でも中身がない。それはほんの数ページの空白です。
誰でもこれを手伝ってもらえますか?外部ライブラリを使用するつもりはありません。JavaでPDFファイルを開く方法を理解したいだけです。
ありがとう!