先向文件中写入6个0xFF,再读取刚写的数据,将读取到的再次写到文件,文件却变成了3个0x3F, 数值变了,个数也减半。请教这是为什么?有个任务就是要不断在文件中将特定字节的0变成0xFF以作为该条记录是删除还是正常的标记。请问该如何解决这个问题?谢谢。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();
}
}
}
}

解决方案 »

  1.   

    任务要求要用DataInputStream/DataOutputStream. 一定要在0和FF间切换。
      

  2.   

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

  3.   


    跟据你的提示,我先写6个0xFF,中间不打开,接着读入再回写,再用ue打开,结果还是变成一个3F。
      

  4.   

    在這個階段dos.write(data.getBytes());,得到的將要寫入的bytes到底是什麽呢
    確定了之後,再根據文件中的結果,都能反推出encoding