0

サンプルコードは:-

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;

public class CopyBytes {

    public static void main(String [] args){
    CopyBytes obj = new CopyBytes();
    File file = new File("/home/mount/Data/JAVA/xanadu.bak");
    obj.copyBytes(file);
    }

    public void copyBytes(File ifile){
    FileInputStream reader = null;
    FileOutputStream output =null;
    int c=0;
    try{
    reader = new FileInputStream(ifile);
    output = new FileOutputStream("outfile");
    while((c = reader.read()) != -1)
    {
        System.out.print(c);
        output.write(c);
    }   
        System.out.println();
    }
    catch(FileNotFoundException fnfex){
    fnfex.getMessage();
    fnfex.printStackTrace();
    }
    catch(IOException ioex){
    ioex.getMessage();
    ioex.printStackTrace();
    }
    finally{
    if(reader !=null)
    {
        System.out.println("Closing the Stream");
        try{
        reader.close();
        System.out.println("Closed the Streams");
        }
        catch(IOException ioex)
        {
            ioex.printStackTrace();
        }
    }
    else{
    System.out.println("Stream not open");
    }
}
}
}

内容は以下のxanadu.bak通りです:-

buffer@ankit:/home/mount/Data/JAVA/practice/src/fileio.bytestreams.com$ cat /home/mount/Data/JAVA/xanadu.bak
IA

上記のコードを実行すると、次の出力が得られます。

buffer @ ankit:/home/mount/Data/JAVA/practice/src/fileio.bytestreams.com $ java CopyBytes

736510
Closing the Stream
Closed the Streams

私は取得する必要がありますが

7365
Closing the Stream
Closed the Streams

私が書いているファイルは完全に問題ありません。貴重な情報を提供してください。

4

1 に答える 1

1

最後に表示される文字は10dまたは0x0A. それは改行文字です。0x0D 0x0A他のプラットフォームでは、またはその逆の組み合わせ が発生する可能性があります。

多くの編集者は、改行がない場合はファイルの最後に追加します。それがあなたが見ているものです。

ファイルに実際hexdumpに何が含まれているかを確認するには、次のようなものを使用します。あなたのコードはそのためにもかなりうまく機能します:-)

于 2012-11-20T17:03:44.180 に答える