您的位置:首页 > 编程语言 > Java开发

java byte【】数组与文件读写

2015-12-16 11:39 531 查看
此文全文参考http://blog.csdn.net/sniffer_wang/article/details/7455701,自己加以改进应用,谢了

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileHelper {
//第一种获取文件内容方式
public byte[] getContent(String filePath) throws IOException {
File file = new File(filePath);

long fileSize = file.length();
if (fileSize > Integer.MAX_VALUE) {
System.out.println("file too big...");
return null;
}

FileInputStream fi = new FileInputStream(file);

byte[] buffer = new byte[(int) fileSize];

int offset = 0;

int numRead = 0;

while (offset < buffer.length

&& (numRead = fi.read(buffer, offset, buffer.length - offset)) >= 0) {

offset += numRead;

}

// 确保所有数据均被读取

if (offset != buffer.length) {

throw new IOException("Could not completely read file "+ file.getName());

}

fi.close();

return buffer;
}

//第二种获取文件内容方式
public byte[] getContent2(String filePath) throws IOException
{
FileInputStream in=new FileInputStream(filePath);

ByteArrayOutputStream out=new ByteArrayOutputStream(1024);

System.out.println("bytes available:"+in.available());

byte[] temp=new byte[1024];

int size=0;

while((size=in.read(temp))!=-1)
{
out.write(temp,0,size);
}

in.close();

byte[] bytes=out.toByteArray();
System.out.println("bytes size got is:"+bytes.length);

return bytes;
}
//将byte数组写入文件
public void createFile(String path, byte[] content) throws IOException {

FileOutputStream fos = new FileOutputStream(path);

fos.write(content);
fos.close();
}

}


将一个文件内的所有内容读取到byte数组,也可以把一个byte[]的内容写入到文件中。可以作为复制文件的方法

应用:

import java.io.IOException;

public class byteRW {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
byte[] buf =new byte[1024];
FileHelper filehelper = new FileHelper();
try {
//第一种获取文件内容方式,读取文件到字节数组
buf =filehelper.getContent("D:/1.txt");
System.out.println("--字节数组"+buf);

String bufStr =new String(buf);
System.out.println("--字节数组转换为字符串"+bufStr);
//将byte数组写入文件
filehelper.createFile("D:/2.txt", buf);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}


将一个文件读取为字节数组,此时打印出来发现什么也看不懂,解决办法:将字节数组强制转换为字符串

方法一:使用new String转换为字符串 (推荐)

方法二:上网查找自定义的字节数组转换为字符串的函数

二、将字节数组直接写入到文件,此时查看目标文件,已经是字符串格式的了

源文件:123456789.0 我爱北京天安门

字节数组:[B@2a139a55

字节数组转换为字符串:123456789.0 我爱北京天安门

目标文件:123456789.0 我爱北京天安门
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: