私は現在、Java でのファイルの読み取りと書き込みに関する 1 つの問題を解決しようとしています。
したがって、タスクは、読み取りたいファイルの InputStream オブジェクトを直接取得し (実際のファイルは InputStream オブジェクトだけではありません)、このオブジェクトから元のファイルを再作成することです。
ファイルからバイト単位でデータを読み取り、別のファイルに同じものを書き込もうとしていました。
ただし、doc、docx、PDF ファイルではなく、.txt ファイルに対してのみ機能します。残りの .txt 以外の形式はチェックしていませんが、すべての形式で機能するようにしたいと考えています。
非 txt 形式の場合、ファイルは生成されますが、その内容は表示されません。
したがって、私の質問は、すべてのタイプのファイル形式に対して InputStream オブジェクトだけを使用してファイルを再作成するにはどうすればよいかということです。
以下は、ファイルの書き込みに使用したサンプル コードです。
File file = new File("/home/sumit/Documents/newAbc.docx");
File fileAbc = new File("/home/sumit/Documents/abc.docx");
InputStream inputStream = new FileInputStream(fileAbc); // this is just for this sample code snippet but orginally I already have InputStream object.
// if file doesnt exists, then create it
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
int data = inputStream.read();
while(data != -1) {
//do something with data...
bw.write(data);
data = inputStream.read();
}
inputStream.close();
bw.close();
上記のコードは適切にコンパイルおよび実行されていますが、作成されたファイルはコンテンツを正しく表示していません。
検索すると、ここからDoc、PDfなどを直接読み取ることができないことがわかりました: Reading .docx file in java
しかし、http://poi.apache.org/ POI ライブラリから、InputStreamを使用してファイルに書き込む方法を教えてくれるものは何も見つかりませんでした。
上記の問題を解決する方法を知っている人はいますか?