一个java程序,拆分多个.java文件写,如何实现呢

一个java程序,拆分多个.java文件写,如何实现呢,第1张

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

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

import java.io.*

public class SegFile{

/**

*根据需求,直接调用静态方法start来执行 *** 作

*参数:

* rows 为多少行一个文件 int 类型

* sourceFilePath 为源文件路径 String 类型

* targetDirectoryPath 为文件分割后存放的目标目录 String 类型

* ---分割后的文件名为索引号(从0开始)加'_'加源文件名,例如源文件名为test.txt,则分割后文件名为0_test.txt,以此类推

*/

public static void start(int rows,String sourceFilePath,String targetDirectoryPath){

File sourceFile = new File(sourceFilePath)

File targetFile = new File(targetDirectoryPath)

if(!sourceFile.exists()||rows<=0||sourceFile.isDirectory()){

System.out.println("源文件不存在或者输入了错误的行数")

return

}

if(targetFile.exists()){

if(!targetFile.isDirectory()){

System.out.println("目标文件夹错误,不是一个文件夹")

return

}

}else{

targetFile.mkdirs()

}

try{

BufferedReader br = new BufferedReader(new FileReader(sourceFile))

BufferedWriter bw = null

String str = ""

String tempData = br.readLine()

int i=1,s=0

while(tempData!=null){

str += tempData+"\r\n"

if(i%rows==0){

bw = new BufferedWriter(new FileWriter(new File(targetFile.getAbsolutePath()+"/"+s+"_"+sourceFile.getName())))

bw.write(str)

bw.close()

str = ""

s += 1

}

i++

tempData = br.readLine()

}

if((i-1)%rows!=0){

bw = new BufferedWriter(new FileWriter(new File(targetFile.getAbsolutePath()+"/"+s+"_"+sourceFile.getName())))

bw.write(str)

bw.close()

br.close()

s += 1

}

System.out.println("文件分割结束,共分割成了"+s+"个文件")

}catch(Exception e){}

}

//测试

public static void main(String args[]){

SegFile.start(11,"d:/test/test.txt","d:/test/test/")

}

}

/*

把代码改了下,先前的代码在行数刚好分完的情况下会多分一个空白文件,现在不存在这个问题了

*/

以下一个拆分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()

   }

  }

 }

}

以上,详细请看注释


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存