用RandomAccessFile读取,用FileOutputStream写入。
按原先设定的大小将文件分成几个小文件。
有的文件会出现乱码,有的则不会,我摘取两个给大家看看。。
这一个是没有出现乱码现象的小文件
                                 08年暑期社会实践报告
      暑期的 七月是 激情奔放的,08年的 盛夏是红火澎湃的。身为当代大学生的我虽然不能身临北京为奥运喝彩,为运动健儿加油,但也用独有的方式和举动响应 ,用自己的行动来表达内心的激情,用亲身的实践来充实夏暑的狂热。
出现乱码现象的小文件,不是全部乱码,而是到了后面出现乱码现象的,为什么会出现这种情况,有没有相应的解决办法?
     我在工作中大多负责装卸车的拖运,能经常出入车间,也让我初步了解到了食品加工的大概工作流程:产品原料的采购——产品原料的预处理——产品的初加工——产品深加工——装料、包装——出厂检验(——装车出售 F渌附诰鸵郎韵蠛蜕婺!⒓凹际鹾康绕渌硖跫ā6杂诒疚称饭こ谭较蜃ㄒ凳俏依此担私庹庑韵衷诨蚪窈蠖级嗌倩嵊邪镏摹?

解决方案 »

  1.   

    贴出核心代码
    while((currentLength+length)<fileLength){
    inputFile.seek(currentLength);
    inputFile.read(allFile, 0, length);
    int shift=0;
    while(allFile[length+shift-1]!='\n'){
    inputFile.seek(currentLength+length+shift);
    shift++;
    allFile[length+shift]=inputFile.readByte();

    }
    currentLength+=(shift+length);
    String outputFilename = destinationTextField.getText() + "\\"
    + FilenameTextField.getText()+last + ".txt";
    FileOutputStream outputFile = new FileOutputStream(
    outputFilename);
    outputFile.write(allFile,0,length+shift);
    outputFile.close();
    last++;
    }
      

  2.   

    while((currentLength+length)<fileLength){ //判断已经读入的二进制数+即将读入的二进制数的总和是否超过文件长
    inputFile.seek(currentLength); //定位读入文件的起始地址
    inputFile.read(allFile, 0, length);//读入指定长度的数据
    int shift=0;
    while(allFile[length+shift-1]!='\n'){ //判断当前读入数据的最后一位是否为换行符,如果不是则继续往下读
    inputFile.seek(currentLength+length+shift);
    shift++;
    allFile[length+shift]=inputFile.readByte();

    }
      

  3.   

    你源文件用的什么编码方式,如果程序中没有对编码方式进行转换,那么目标文件也是同样的编码方式,是不是你查看目标文件的浏览器有问题。因为如果你用unicode编码,用utf-8的方式去查看,也可以看到一部分正确的文本,但有的就是乱码,因为两者在有的字符上编码方式一样,有的不一样。
      

  4.   

    这个不是数据库
    而是一个TXT文件的分割而已
    为什么会有的字符出现乱码?(而且这些字符在有的地方不会出现乱码现象)
    是不是我读取文件的时候出现错误?
    还是写入文件的时候出现错误?
      

  5.   

    就是由于读字节造成的乱码.
    很奇怪你为什么不一行一行的读取文件呢.
    你用RandomAccessFile有什么特别的用途吗?
    用BufferedReader的ReadLine()方法不成吗?
      

  6.   

    用这两个试试
    InputStream is = new FileInputStream(source);
    OutputStream os = new FileOutputStream(tarpath);
    部分代码:                InputStream is = new FileInputStream(source);
                    OutputStream os = new FileOutputStream(tarpath);
                    byte[] buf = new byte[1024];
                    int len = 0;
                    while ((len = is.read(buf)) != -1)
                    {
                        os.write(buf, 0, len);
                    }
                    is.close();
                    os.close();
    原来用FileInputStream和FileOutputStream时候也出现过乱码(源文件和目标文件里的中文都变成乱码) 
      

  7.   

    那是由于读写文件的时候没有处理转码问题!
    实际上只要在write和read的时候都做下字符转换就不会出现这样的问题了!
    至于怎么转的,我这没有现成代码,楼主可以到网上搜索下!
      

  8.   

    文件使用Unicode编码就好了(等长编码),gbk就会出问题
      

  9.   

    一般都用utf-8的编码,如果有换行或者空格什么的,最好使用系统常量,不要使用"\n"
      

  10.   

    我是按照字数读取的
    所以就用RandomAccessFile/../..