Java拆分txt文件的写法

Java拆分txt文件的写法,第1张

以下一个拆分txt的Util类

import java.io.File

import java.io.FileInputStream

import java.io.FileNotFoundException

import java.io.FileOutputStream

import java.io.IOException

import java.io.InputStream

import java.io.OutputStream

public class FileCutter {

 /**

 *

 *sourceFile:源文件的路径

 *targetDirectory:保存文件的目录(例:'C:\\')

 *prefix:是分割后文件的前缀(例:'2015-09-09')

 *size:是分隔后单一文件的大小单位是2kb的倍数,size传10,分割后单一文件就是20K。传100,文件就是2M一个。

 *

 **/

 public static void cutToMoreFile(String sourceFile, String targetDirectory, String prefix, int size)

 {

 //加载源文件

      File source = new File(sourceFile)

      InputStream in = null

      OutputStream out = null

      int len = 0

      int fileIndex = 1

       //设置一次加载的大小

      byte[] buffer = new byte[2048]

  try 

  {

   //把源文件读到InputStream中

       in = new FileInputStream(source)

   //循环

       while(true)

       {

   //分割后的文件流

        out = new FileOutputStream(targetDirectory + File.separator + prefix + fileIndex++ + ".txt")

        for(int i = 0 i < size i++)

        {

           //如果文件读取完就退回方法。

             if((len = in.read(buffer)) != -1)

             {

             //写入分割后的文件

              out.write(buffer, 0, len)

             }else

             {

             //执行finally内容后,退出方法

                  return

             }

        }

       }

  } catch (FileNotFoundException e) {

   // TODO Auto-generated catch block

   e.printStackTrace()

  } catch (IOException e) {

   // TODO Auto-generated catch block

   e.printStackTrace()

  }finally

  {

   try {

   //关系流

    in.close()

    out.close()

   } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace()

   }

  }

 }

}

以上,详细请看注释

如果这个java代码里面有多个类,每个类放到一个java文件中。如果只有一个类,那就没办法了。只能通过优化业务逻辑,来减少代码。

一般只要代码格式、注释规范,长一点并不会影响可读性。倒是不好的业务逻辑会影响执行的性能。

1、按行读,每个换行符是一行

2、读出行后按空格拆分字符串下面提供一个工具方法:

public static String[] split(String str, char separatorChar) {

if (str == null) {

return null

}

int length = str.length()

if (length == 0) {

return ArrayUtil.EMPTY_STRING_ARRAY

}

Listlist = new ArrayList()

int i = 0

int start = 0

boolean match = false

while (i <length) {

if (str.charAt(i) == separatorChar) {

if (match) {

list.add(str.substring(start, i))

match = false

}

start = ++i

continue

}

match = true

i++

}

if (match) {

list.add(str.substring(start, i))

}

return (String[]) list.toArray(new String[list.size()])

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8080237.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存