zoukankan      html  css  js  c++  java
  • 读取Java文件到byte数组的三种方式

    [java]view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. packagezs;
    2. importjava.io.BufferedInputStream;
    3. importjava.io.ByteArrayOutputStream;
    4. importjava.io.File;
    5. importjava.io.FileInputStream;
    6. importjava.io.FileNotFoundException;
    7. importjava.io.IOException;
    8. importjava.io.RandomAccessFile;
    9. importjava.nio.ByteBuffer;
    10. importjava.nio.MappedByteBuffer;
    11. importjava.nio.channels.FileChannel;
    12. importjava.nio.channels.FileChannel.MapMode;
    13. publicclassFileUtils{
    14. publicbyte[]getContent(StringfilePath)throwsIOException{
    15. Filefile=newFile(filePath);
    16. longfileSize=file.length();
    17. if(fileSize>Integer.MAX_VALUE){
    18. System.out.println("filetoobig...");
    19. returnnull;
    20. }
    21. FileInputStreamfi=newFileInputStream(file);
    22. byte[]buffer=newbyte[(int)fileSize];
    23. intoffset=0;
    24. intnumRead=0;
    25. while(offset<buffer.length
    26. &&(numRead=fi.read(buffer,offset,buffer.length-offset))>=0){
    27. offset+=numRead;
    28. }
    29. //确保所有数据均被读取
    30. if(offset!=buffer.length){
    31. thrownewIOException("Couldnotcompletelyreadfile"
    32. +file.getName());
    33. }
    34. fi.close();
    35. returnbuffer;
    36. }
    37. /**
    38. *thetraditionalioway
    39. *
    40. *@paramfilename
    41. *@return
    42. *@throwsIOException
    43. */
    44. publicstaticbyte[]toByteArray(Stringfilename)throwsIOException{
    45. Filef=newFile(filename);
    46. if(!f.exists()){
    47. thrownewFileNotFoundException(filename);
    48. }
    49. ByteArrayOutputStreambos=newByteArrayOutputStream((int)f.length());
    50. BufferedInputStreamin=null;
    51. try{
    52. in=newBufferedInputStream(newFileInputStream(f));
    53. intbuf_size=1024;
    54. byte[]buffer=newbyte[buf_size];
    55. intlen=0;
    56. while(-1!=(len=in.read(buffer,0,buf_size))){
    57. bos.write(buffer,0,len);
    58. }
    59. returnbos.toByteArray();
    60. }catch(IOExceptione){
    61. e.printStackTrace();
    62. throwe;
    63. }finally{
    64. try{
    65. in.close();
    66. }catch(IOExceptione){
    67. e.printStackTrace();
    68. }
    69. bos.close();
    70. }
    71. }
    72. /**
    73. *NIOway
    74. *
    75. *@paramfilename
    76. *@return
    77. *@throwsIOException
    78. */
    79. publicstaticbyte[]toByteArray2(Stringfilename)throwsIOException{
    80. Filef=newFile(filename);
    81. if(!f.exists()){
    82. thrownewFileNotFoundException(filename);
    83. }
    84. FileChannelchannel=null;
    85. FileInputStreamfs=null;
    86. try{
    87. fs=newFileInputStream(f);
    88. channel=fs.getChannel();
    89. ByteBufferbyteBuffer=ByteBuffer.allocate((int)channel.size());
    90. while((channel.read(byteBuffer))>0){
    91. //donothing
    92. //System.out.println("reading");
    93. }
    94. returnbyteBuffer.array();
    95. }catch(IOExceptione){
    96. e.printStackTrace();
    97. throwe;
    98. }finally{
    99. try{
    100. channel.close();
    101. }catch(IOExceptione){
    102. e.printStackTrace();
    103. }
    104. try{
    105. fs.close();
    106. }catch(IOExceptione){
    107. e.printStackTrace();
    108. }
    109. }
    110. }
    111. /**
    112. *MappedFilewayMappedByteBuffer可以在处理大文件时,提升性能
    113. *
    114. *@paramfilename
    115. *@return
    116. *@throwsIOException
    117. */
    118. publicstaticbyte[]toByteArray3(Stringfilename)throwsIOException{
    119. FileChannelfc=null;
    120. try{
    121. fc=newRandomAccessFile(filename,"r").getChannel();
    122. MappedByteBufferbyteBuffer=fc.map(MapMode.READ_ONLY,0,
    123. fc.size()).load();
    124. System.out.println(byteBuffer.isLoaded());
    125. byte[]result=newbyte[(int)fc.size()];
    126. if(byteBuffer.remaining()>0){
    127. //System.out.println("remain");
    128. byteBuffer.get(result,0,byteBuffer.remaining());
    129. }
    130. returnresult;
    131. }catch(IOExceptione){
    132. e.printStackTrace();
    133. throwe;
    134. }finally{
    135. try{
    136. fc.close();
    137. }catch(IOExceptione){
    138. e.printStackTrace();
    139. }
    140. }
    141. }
    142. }
  • 相关阅读:
    Spring基础知识
    Hibernate基础知识
    Struts2基础知识
    在eclipse里头用checkstyle检查项目出现 File contains tab characters (this is the first instance)原因
    java后台获取cookie里面值得方法
    ckplayer 中的style.swf 中的 style.xml 中的修改方法
    java hql case when 的用法
    Windows下Mongodb安装及配置
    Mongodb中经常出现的错误(汇总)child process failed, exited with error number
    Mac 安装mongodb
  • 原文地址:https://www.cnblogs.com/xue88ming/p/7183006.html
Copyright © 2011-2022 走看看