java byte【】数组与文件读写

此文全文参考http://blog.csdn.net/sniffer_wang/article/details/7455701,自己加以改进应用,谢了

 1 import java.io.ByteArrayOutputStream;
 2 import java.io.File;
 3 import java.io.FileInputStream;
 4 import java.io.FileOutputStream;
 5 import java.io.IOException;
 6 
 7 public class FileHelper {
 8     //第一种获取文件内容方式
 9     public byte[] getContent(String filePath) throws IOException {
10         File file = new File(filePath);
11 
12         long fileSize = file.length();
13         if (fileSize > Integer.MAX_VALUE) {
14             System.out.println("file too big...");
15             return null;
16         }
17 
18         FileInputStream fi = new FileInputStream(file);
19 
20         byte[] buffer = new byte[(int) fileSize];
21 
22         int offset = 0;
23 
24         int numRead = 0;
25 
26         while (offset < buffer.length
27 
28         && (numRead = fi.read(buffer, offset, buffer.length - offset)) >= 0) {
29 
30             offset += numRead;
31 
32         }
33 
34         // 确保所有数据均被读取
35 
36         if (offset != buffer.length) {
37 
38             throw new IOException("Could not completely read file "+ file.getName());
39 
40         }
41 
42         fi.close();
43 
44         return buffer;
45     }
46     
47     //第二种获取文件内容方式
48     public byte[] getContent2(String filePath) throws IOException
49     {
50         FileInputStream in=new FileInputStream(filePath);
51         
52         ByteArrayOutputStream out=new ByteArrayOutputStream(1024);
53         
54         System.out.println("bytes available:"+in.available());
55         
56         byte[] temp=new byte[1024];
57         
58         int size=0;
59         
60         while((size=in.read(temp))!=-1)
61         {
62             out.write(temp,0,size);
63         }
64         
65         in.close();
66         
67         byte[] bytes=out.toByteArray();
68         System.out.println("bytes size got is:"+bytes.length);
69         
70         return bytes;
71     }
72         //将byte数组写入文件
73     public void createFile(String path, byte[] content) throws IOException {
74 
75         FileOutputStream fos = new FileOutputStream(path);
76 
77         fos.write(content);
78         fos.close();
79     }
80 
81 }

将一个文件内的所有内容读取到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 我爱北京天安门

posted @ 2015-12-16 11:39  平常心,平常心  阅读(8525)  评论(0编辑  收藏  举报