日期:2014-05-20  浏览次数:20695 次

Java IO 中 ,0xFF read出来,在write回去后变成3F,why?
先向文件中写入6个0xFF,再读取刚写的数据,将读取到的再次写到文件,文件却变成了3个0x3F, 数值变了,个数也减半。请教这是为什么?

有个任务就是要不断在文件中将特定字节的0变成0xFF以作为该条记录是删除还是正常的标记。请问该如何解决这个问题?谢谢。

Java code


import java.io.*;
public class DataStreamTest {
    public static void main(String[] args) {
        File file1 = new File("e:/testff.txt");
        File file2 = new File("e:/testff.txt");
        FileInputStream fis = null;
        FileOutputStream fos = null;
        DataInputStream dis = null;
        DataOutputStream dos = null;
        try {
            fis = new FileInputStream(file1);
            dis = new DataInputStream(fis);
            int n = 0;
            byte[] buff = new byte[1024];
            String data = "";
            int i = 0;
            while((n=dis.read(buff))!=-1){
                data += new String(buff,0,1,"iso-8859-1");
            }            
            fos = new FileOutputStream(file2);
            dos = new DataOutputStream(fos);
            dos.write(data.getBytes());
//            dos.write(-1);
//            dos.write(-1);
//            dos.write(-1);
//            dos.write(-1);
//            dos.write(-1);
//            dos.write(-1);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                if(dis!=null)dis.close();
                if(fis!=null)fis.close();
                if(dis!=null)dis.close();
                if(dos!=null)dos.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}




------解决方案--------------------
你是不写好了之后使用记事本打开来过的?
------解决方案--------------------
你完全可以调试一下,看每次写入的data到底是什么
------解决方案--------------------
探讨

引用:

你完全可以调试一下,看每次写入的data到底是什么


就是每次看着它莫名其妙的变了,才觉得奇怪。不知道是不是系统的编码方式设置的问题。