此文全文参考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 我爱北京天安门

java byte【】数组与文件读写的更多相关文章

  1. java byte【】数组与文件读写(增加新功能)

    今天在测试直接写的文章: java byte[]数组与文件读写 时,想调用FileHelper类对字节数组以追加的方式写文件,结果无论怎样竟然数据录入不全,重新看了下文件的追加模式,提供了两种方式: ...

  2. Java 字符流实现文件读写操作(FileReader-FileWriter)

    Java 字符流实现文件读写操作(FileReader-FileWriter) 备注:字符流效率高,但是没有字节流底层 字节流地址:http://pengyan5945.iteye.com/blog/ ...

  3. java byte数组与String互转

      java byte数组与String互转 CreationTime--2018年7月6日14点53分 Author:Marydon 1.String-->byte[] 方法:使用String ...

  4. java byte数组与16进制间的相互转换

      java byte数组与16进制间的相互转换 CreationTime--2018年6月11日15点34分 Author:Marydon 1.准备工作 import java.util.Array ...

  5. 【java学习笔记】文件读写(IO流)

    1.字节流 FileInputStream.FileOutputStream ①FileInputStream import java.io.FileInputStream; public class ...

  6. byte数组和文件的相互转换

    /** * 获得指定文件的byte数组 */ private byte[] getBytes(String filePath){ byte[] buffer = null; try { File fi ...

  7. java byte数组与int,long,short,byte转换

    public class DataTypeChangeHelper { /** * 将一个单字节的byte转换成32位的int * * @param b * byte * @return conver ...

  8. java byte数组与String的相互转换

    String  ->   byte数组 String str = "abc天"; byte[] btr = str.getBytes(); System.out.printl ...

  9. java中的File文件读写操作

    之前有好几次碰到文件操作方面的问题,大都由于时间太赶而没有好好花时间去细致的研究研究.每次都是在百度或者博客或者论坛里面參照着大牛们写的步骤照搬过来,之后再次碰到又忘记了.刚好今天比較清闲.于是就在网 ...

随机推荐

  1. iOS设置状态栏的字体颜色

    设置statusBar的[前景色部分] 1.plist设置statusBar 在plist里增加一行 UIStatusBarStyle(或者是“Status bar style”也可以),这里可以设置 ...

  2. 解决浏览器不支持HTML5和CSS3

    Modernizr插件可用于解决:<响应式web设计>提及! 其他: 第一种方法:IE9以下版本的IE将创建HTML5标签, 非IE浏览器会忽略这段代码,因此不会发生http请求,也就不影 ...

  3. jqGrid简述

    转自:http://www.blogjava.net/ilovebabyfat/archive/2012/04/06/373456.html jqGrid学习之 ------------- 安装 1. ...

  4. 流水线技术原理和Verilog HDL实现(转)

    源:流水线技术原理和Verilog HDL实现 所谓流水线处理,如同生产装配线一样,将操作执行工作量分成若干个时间上均衡的操作段,从流水线的起点连续地输入,流水线的各操作段以重叠方式执行.这使得操作执 ...

  5. iOS子线程更新UI的两种方法

    http://blog.csdn.net/libaineu2004/article/details/45368427 方法1:performSelectorOnMainThread[self perf ...

  6. mysql 常用指令

    修改表的字符集 88down voteaccepted If you want to change the table default character set and all character ...

  7. AndroidManifest.xml文件

    AndroidManifest.xml常用标签解读 1.全局篇(包名,版本信息) 2.组件篇(四大组件) Activity Service Content Provider Broadcast Rec ...

  8. Sigmoid函数

    Sigmoid函数是一个S型函数. Sigmoid函数的数学公式为: 它是常微分方程 的一个解. Sigmoid函数具有如下基本性质: 定义域为 值域为, 为有界函数 函数在定义域内为连续和光滑函数 ...

  9. HTML5+MUI+HBuilder 之初探情人

    07,08年那会儿正当Java火爆,C/C++仍是广泛运用的一门语言的时候,所以 我的大学都献给了C/C++和Java.当诺基亚的倒闭成为按键机时代衰落的标志时,移动APP的开发也如破堤之洪,爆炸式的 ...

  10. Spring的IOC原理[通俗解释一下]

    Spring的IOC原理[通俗解释一下] 1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图 ...