-2

私はこのようなテキスト段落を生成しています:

>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();
        }

      } 
}
4

1 に答える 1

2

メモ帳は Windows の回線の終了を予期していると思います。 \r\n、 だけでなく\n

Notepad++ などの別のエディターで開いてみてください。

http://en.wikipedia.org/wiki/Newline

于 2013-10-07T23:16:15.677 に答える