• java IO中的乱码问题


     1    //文件拆分
     2     public void SplitFileStream(String src){
     3         //数据源
     4         File file = new File(src);
     5         //总长度
     6         long len = file.length();
     7         //块大小
     8         int blockSize = 500;
     9         //块个数
    10         int size = (int)Math.ceil(len*1.0/blockSize);
    11 
    12         //起始位置和实际大小
    13         int beginPos = 0;
    14         int actualSize = 0;
    15         for(int i= 0;i < size;++i){
    16             beginPos = i*blockSize;
    17             if(i == size -1){//最后一块另外处理
    18                 actualSize = (int)len;
    19             }else{//剩余块数
    20                 actualSize = blockSize;
    21                 len-=actualSize;
    22             }
    23             Split(file,i,beginPos, actualSize);
    24         }
    25     }
    26     public void Split(File srcFile,int i,long beginPos,int actualSize){
    27         RandomAccessFile in = null;
    28         RandomAccessFile out = null;
    29         try {
    30             in = new RandomAccessFile((srcFile), "r");
    31             out = new RandomAccessFile(new File("D:\Test\split\"+i+"-"+srcFile.getName()), "rw");
    32             in.seek(beginPos);
    33             byte[] buffer = new byte[1024];
    34             int length = -1;
    35             while ((length = in.read(buffer, 0, buffer.length))!=-1){
    36                 if (actualSize>length){
    37                     out.write(buffer, 0, length);
    38                     actualSize-=length;
    39                 }else{
    40                     out.write(buffer, 0, actualSize);
    41                     break;
    42                 }
    43             }
    44             System.out.println(i+"-->"+"已完成!");
    45         } catch (FileNotFoundException e) {
    46             System.out.println(i+"-->"+"有误!");
    47         } catch (IOException e) {
    48             System.out.println(i+"-->"+"有误!");
    49         }finally {
    50             if(out!=null){
    51                 try {
    52                     out.close();
    53                 } catch (IOException e) {
    54                     e.printStackTrace();
    55                 }
    56             }
    57             if (in!=null){
    58                 try {
    59                     in.close();
    60                 } catch (IOException e) {
    61                     e.printStackTrace();
    62                 }
    63             }
    64         }
    65     }

    执行上面的代码可以将某文件拆分成多个文件存储,但会出现部分正常,部分乱码的问题???

  • 相关阅读:
    Spring Security 3.2.x与Spring 4.0.x的Maven依赖管理
    文件下载-SpringMVC中測试
    Redhat 6.3中syslog信息丢失
    HDU2586 How far away ?(LCA模板题)
    android开机启动应用和服务
    swift 3.0基本数据语法
    swift 获取UI上某点点颜色
    Hello_IOS ios开发transform属性
    CGAffineTransformMakeTranslation和CGAffineTransform
    iOS 原生地图(MapKit、MKMapView)轨迹渐变
  • 原文地址:https://www.cnblogs.com/skyblue123/p/13154778.html
Copyright © 2020-2023  润新知