当前位置: 代码迷 >> Java相关 >> 请问一个Java读文件的方法,读出来和写入之后比较,发现内容不一样
  详细解决方案

请问一个Java读文件的方法,读出来和写入之后比较,发现内容不一样

热度:23   发布时间:2016-04-22 21:00:59.0
请教一个Java读文件的方法,读出来和写入之后比较,发现内容不一样
请教一个Java读文件的方法,读出来和写入之后比较,发现内容不一样,不知道哪里错了? 请赐教!


package TEST;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;

public class TEST {

/**
 * @param args
 * @throws IOException 
 */
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub

   
    int RecvLen = 0;
    int isReadByte = 0;
    long FileLength = 0;
    String FileName = "D:\\data.bin";
    RandomAccessFile file = new RandomAccessFile(FileName, "r");
    FileLength = file.length();
    file.close();
    byte[] RecvBuf = new byte[1024];
    byte[] BackBuf = new byte[(int) FileLength];
    int i = 0;
    while(FileLength!= RecvLen)
    {
     isReadByte = Read(RecvBuf,FileName,RecvLen);
     RecvLen += isReadByte;
     for(int x = 0;x < isReadByte;x++)
     {
     BackBuf[i++] = RecvBuf[x];
     }
    }
    
        FileOutputStream fos = new FileOutputStream("D:\\data_back.bin");  
        fos.write(BackBuf);  
        fos.close();     
  
   
}

public static int Read(byte[] buf, String FileName,int RecvLen)
{  int sendbuflen = 960;
 RandomAccessFile file = null;
try {
file = new RandomAccessFile(FileName, "r");
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
 try {
if(file.length()>(RecvLen+960))
 {
 sendbuflen = 960;
 }
 else
 {
 sendbuflen = (int) (file.length() - RecvLen);  
 
 }
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
 
int isReadByte = 0;
try {
isReadByte = file.read(buf, RecvLen, sendbuflen);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
 
 if(file!=null)
 {
 try {
file.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
 }
 return isReadByte;
}

}

------解决方案--------------------
楼主有没有比过两个byte数据的区别?byte数据和硬盘上数据的区别?
  相关解决方案