【Java文件操作】一个将文件转化为十六进制字节数组的工具(可以以8086汇编查看内存的格式输出,很优雅)
生活随笔
收集整理的這篇文章主要介紹了
【Java文件操作】一个将文件转化为十六进制字节数组的工具(可以以8086汇编查看内存的格式输出,很优雅)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
將文件轉化為字節數組
寫了一個方法,直接用即可
/*** 將文件轉化成字節數組** @param 要轉換的文件路徑* @return 轉換成的字節數組* @throws IOException*/public static byte[] fileToByteArray(String filePath) throws IOException {// 創建源與目的地File fromfile = new File(filePath);// 選擇流FileInputStream instream = new FileInputStream(fromfile);ByteArrayOutputStream outstream = new ByteArrayOutputStream();// 操作byte[] flush = new byte[1024 * 10];int len = -1;while ((len = instream.read(flush)) != -1) {outstream.write(flush, 0, len);}// 關閉流outstream.flush();instream.close();return outstream.toByteArray();}將字符串轉化為字節數組
這個比較簡單,一行就完事
byte[] data = "這是一個字符串".getBytes()將文件轉化為十六進制字節數組的工具——輸出效果(部分)
00000: 69 6D 70 6F 72 74 20 6A 61 76 61 2E 69 6F 2E 42 00010: 79 74 65 41 72 72 61 79 4F 75 74 70 75 74 53 74 00020: 72 65 61 6D 3B 0D 0A 69 6D 70 6F 72 74 20 6A 61 00030: 76 61 2E 69 6F 2E 46 69 6C 65 3B 0D 0A 69 6D 70 00040: 6F 72 74 20 6A 61 76 61 2E 69 6F 2E 46 69 6C 65 00050: 49 6E 70 75 74 53 74 72 65 61 6D 3B 0D 0A 69 6D 00060: 70 6F 72 74 20 6A 61 76 61 2E 69 6F 2E 46 69 6C 00070: 65 4F 75 74 70 75 74 53 74 72 65 61 6D 3B 0D 0A 00080: 69 6D 70 6F 72 74 20 6A 61 76 61 2E 69 6F 2E 49 00090: 4F 45 78 63 65 70 74 69 6F 6E 3B 0D 0A 69 6D 70 000A0: 6F 72 74 20 6A 61 76 61 2E 69 6F 2E 4F 75 74 70 000B0: 75 74 53 74 72 65 61 6D 3B 0D 0A 0D 0A 70 75 62 000C0: 6C 69 63 20 63 6C 61 73 73 20 4D 61 69 6E 20 7B 000D0: 0D 0A 0D 0A 09 2F 2F 20 28 E7 A1 AC E7 9B 98 E4 000E0: B8 AD 29 E5 9B BE E7 89 87 20 2D 3E 20 28 E5 86 000F0: 85 E5 AD 98 E4 B8 AD 29 E5 AD 97 E8 8A 82 E6 95 00100: B0 E7 BB 84 0D 0A 09 70 75 62 6C 69 63 20 73 74 00110: 61 74 69 63 20 62 79 74 65 5B 5D 20 66 69 6C 65 00120: 54 6F 42 79 74 65 41 72 72 61 79 28 53 74 72 69 00130: 6E 67 20 66 69 6C 65 50 61 74 68 29 20 74 68 72 00140: 6F 77 73 20 49 4F 45 78 63 65 70 74 69 6F 6E 20工具代碼
源碼來自《JAVA編程思想》并稍加修改。留著備用~
import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException;public class Main {/*** 將文件轉化成字節數組** @param 要轉換的文件路徑* @return 轉換成的字節數組* @throws IOException*/public static byte[] fileToByteArray(String filePath) throws IOException {// 創建源與目的地File fromfile = new File(filePath);// 選擇流FileInputStream instream = new FileInputStream(fromfile);ByteArrayOutputStream outstream = new ByteArrayOutputStream();// 操作byte[] flush = new byte[1024 * 10];int len = -1;while ((len = instream.read(flush)) != -1) {outstream.write(flush, 0, len);}// 關閉流outstream.flush();instream.close();return outstream.toByteArray();}/*** 將字節數組轉換為十六進制,以優美的格式輸出* * @param data* @return*/public static String format(byte[] data) {StringBuilder result = new StringBuilder();int n = 0;for (byte b : data) {if (n % 16 == 0)result.append(String.format("%05X: ", n));result.append(String.format("%02X ", b));n++;if (n % 16 == 0)result.append("\n");}result.append("\n");return result.toString();}public static void main(String[] args) throws Exception {// System.out.println(format("abcdefg".getBytes()));//將字符串轉換為字節數組輸出System.out.println(format(fileToByteArray("src/Main.java")));// 將文件轉化為字節數組輸出} }總結
以上是生活随笔為你收集整理的【Java文件操作】一个将文件转化为十六进制字节数组的工具(可以以8086汇编查看内存的格式输出,很优雅)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Java基础】Java中的值传递、引用
- 下一篇: 【Java虚拟机】Java虚拟机深度讲解