java byte【】数组与文件读写
2015-12-16 11:39
531 查看
此文全文参考http://blog.csdn.net/sniffer_wang/article/details/7455701,自己加以改进应用,谢了
将一个文件内的所有内容读取到byte数组,也可以把一个byte[]的内容写入到文件中。可以作为复制文件的方法
应用:
将一个文件读取为字节数组,此时打印出来发现什么也看不懂,解决办法:将字节数组强制转换为字符串
方法一:使用new String转换为字符串 (推荐)
方法二:上网查找自定义的字节数组转换为字符串的函数
二、将字节数组直接写入到文件,此时查看目标文件,已经是字符串格式的了
源文件:123456789.0 我爱北京天安门
字节数组:[B@2a139a55
字节数组转换为字符串:123456789.0 我爱北京天安门
目标文件:123456789.0 我爱北京天安门
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 我爱北京天安门
相关文章推荐
- 深度分析Java的枚举类型—-枚举的线程安全性及序列化问题
- Java开发中的23种设计模式详解(转)
- Spring MVC 框架搭建及详解
- jdk和jre的区别和联系--详细
- maven 设置编译版本为java8 设置字符集为utf8
- [转载]spring+mybatis加载属性文件设置数据源失败原因及解决方案 - 泡在网上的日子
- MyEclipse professional 2014破解教程-转载并修正错误
- java学习笔记-设计模式21(状态模式)
- java学习笔记-设计模式20(备忘录模式)
- java学习笔记-设计模式19(命令模式)
- 我的Java后端书架2015年2.0版
- Java中事件分发线程(EDT)与SwingUtilities.invokeLater相关总结
- java对DB2数据库大字段(BLOB类型)的处理
- Java API —— 泛型
- 解决eclipse的 Invalid project description. overlaps the location of another project: 问题
- Spring+Websocket集群实现广告消息的推送
- java学习笔记-设计模式18(职责链模式)
- JavaEE_Web项目部署经验_Windows环境下
- java学习笔记-设计模式17(迭代器模式)
- java之旅