私はこのようなテキスト段落を生成しています:
>1. this is the first line
>1. this is the second line
>1. this is the third line
>1. this is the fourth line
それを文字列に格納します
次に、この文字列を圧縮されたテキスト ドキュメントに出力したいのですが、すべて機能しますが、FileOutputStream で作成されたテキスト ファイルを開くと、書式がありません。書式を取得する方法を知っていますか?
コード:
try
{
String toZip = file.toString();
DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("test.zip")));
ZipOutputStream zos = new ZipOutputStream(dos);
byte[] b = toZip.getBytes("UTF8");
ZipEntry entry = new ZipEntry("TheFirstFile.txt");
System.out.println("Zipping.." + entry.getName());
zos.putNextEntry(entry);
zos.write(b, 0, b.length);
dos.close();
zos.close();
}
catch (IOException e)
{
e.printStackTrace();
} catch (MyException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
ここにコードを投稿する際に問題がありました..テストプログラム:
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class TestZip {
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("c:\\TEMP\\tests.txt"),"UTF-8"));
StringBuffer buffer = new StringBuffer();
String line = br.readLine();
try
{
while(line != null)
{
if(line != null)
{
buffer.append(line + "\n");
}
line=br.readLine();
}
String data = buffer.toString();
br.close();
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("c:\\TEMP\\ZippedFile.zip"));
ZipOutputStream zos = new ZipOutputStream(bos);
System.out.println(data);
byte[] b = data.getBytes();
ZipEntry entry = new ZipEntry("TheData.txt");
System.out.println("Zipping.." + entry.getName());
zos.putNextEntry(entry);
zos.write(b, 0, b.length);
zos.closeEntry();
zos.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
コンソールで印刷すると、テキストは希望どおりにマージン付けされます。圧縮されたテキスト ファイルを確認すると、テキストはすべて 1 行で表示されます。
コンソール出力:
テキスト ファイルの結果:
コンソールに表示されるのとまったく同じようにテキスト ファイルに表示されるようにしたかったのです。
圧縮されたテキスト ファイルを読み取ることができるプログラムをこれまでコーディングしたことがありませんでしたが、試してみました。
import java.io.FileInputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class TestUnzip {
public static void main (String[] args) {
String unzip = "";
try
{
FileInputStream fin = new FileInputStream("C:\\TEMP\\ZippedFile.zip");
ZipInputStream zin = new ZipInputStream(fin);
ZipEntry ze;
byte[] bytes = new byte[1024];
ze = zin.getNextEntry();
while ((ze = zin.getNextEntry()) != null)
{
if (zin.read(bytes, 0, bytes.length) != -1)
{
unzip = new String(bytes, "UTF-8");
}
else
{
System.out.println("error");
}
ze = zin.getNextEntry();
}
System.out.println(unzip.toString());
zin.closeEntry();
zin.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}