java文件的拆分与合并
- 格式:doc
- 大小:45.50 KB
- 文档页数:11
Word 合并和拆分章节和子文档的方法与技巧在使用Microsoft Word处理文档时,有时需要对章节和子文档进行合并或拆分。
本文将介绍一些方法和技巧,帮助您轻松完成合并和拆分操作。
一、合并章节合并章节功能可以将多个章节合并成一个章节,适用于需要整合多个小章节内容的情况。
下面是实现合并章节的步骤:1. 打开Word文档,定位到需要合并的第一个章节。
2. 在“导航窗格”中,点击“章节”选项卡,可以看到文档的章节列表。
3. 选中需要合并的章节名称,右键点击并选择“合并章节”。
4. Word会自动将选中的章节合并到上一个章节末尾,并自动更新目录。
5. 可以继续选择其他章节进行合并,重复上述步骤即可。
二、拆分章节拆分章节功能适用于需要将较长的文档拆分成多个子文档的情况。
以下是实现拆分章节的步骤:1. 打开Word文档,找到需要拆分的章节。
2. 在需要拆分的章节的开头处插入分页符。
在“插入”选项卡中,选择“分页符”选项。
3. 将光标放置在第一页的任意位置,点击“文件”选项卡,选择“存储为”并选择“子文档”。
4. 在弹出的对话框中,选择存储路径和文件名,并点击“保存”。
5. Word会自动将选中的章节拆分为一个独立的子文档,并将其保存在指定的路径下。
6. 可以重复上述步骤,将其他章节拆分为多个子文档。
三、拆分子文档有时候,一个较大的子文档可能需要分成多个较小的子文档进行管理和编辑。
下面是实现拆分子文档的步骤:1. 打开需要拆分的子文档。
2. 定位到需要拆分的位置,光标设置在该处。
3. 点击“文件”选项卡,选择“存储为”并选择“子文档”。
4. 在弹出的对话框中,选择存储路径和文件名,并点击“保存”。
5. Word会将选中的部分拆分为一个独立的子文档,并将其保存在指定的路径下。
6. 可以重复上述步骤,将其他需要拆分的部分拆分为多个子文档。
通过合并和拆分章节和子文档的方法,我们可以更好地组织和管理Word文档的结构。
java arraylist拆分方法【原创实用版4篇】目录(篇1)I.拆分ArrayList的方法A.拆分ArrayList的背景和意义B.拆分ArrayList的方法介绍C.拆分ArrayList的方法实现D.拆分ArrayList的方法总结正文(篇1)A.拆分ArrayList的背景和意义拆分ArrayList的方法可以帮助我们更好地管理和使用ArrayList。
当我们需要处理大量数据时,使用ArrayList可能会占用大量的内存空间,导致程序运行缓慢。
拆分ArrayList可以将数据分散到多个ArrayList中,减少内存占用,提高程序的性能。
B.拆分ArrayList的方法介绍拆分ArrayList的方法可以使用Java提供的Collections.splitList 方法。
该方法可以将一个ArrayList拆分成多个子ArrayList,并返回一个Listu003cListu003cEu003eu003e类型的数组。
C.拆分ArrayList的方法实现以下是使用Collections.splitList方法拆分ArrayList的示例代码:```javaimport java.util.*;public class Main {public static void main(String[] args) {ArrayListu003cIntegeru003e list = new ArrayListu003cu003e();list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);list.add(6);list.add(7);list.add(8);list.add(9);list.add(10);System.out.println("原列表:");for (int i = 0; i u003c list.size(); i++) {System.out.print(list.get(i) + " ");}System.out.println();Listu003cListu003cIntegeru003eu003e result = Collections.splitList(list, 3);System.out.println("拆分后的列表:");for (Listu003cIntegeru003e subList : result) { System.out.print("{");for (int i = 0; i u003c subList.size(); i++) { System.out.print(subList.get(i) + " ");}System.out.println("}");}}}```输出结果:```python原列表:1 2 3 4 5 6 7 8 9 10拆分后的列表:{1 2 3} {4 5 6} {7 8 9} {10}```D.拆分ArrayList的方法总结拆分ArrayList的方法可以帮助我们更好地管理和使用ArrayList。
教新⼿使⽤java如何对⼀个⼤的⽂本⽂件内容进⾏去重⽬录有内存溢出风险的写法:通过hashCode取模拆分写法:总结有内存溢出风险的写法:public static void distinct() {File ff = new File("G://password/all.txt");File distinctedFile = new File("G://password/all-distinced.txt");PrintWriter pw = null;Set<String> allHash = null;FileReader fr = null;BufferedReader br = null;try {pw = new PrintWriter(distinctedFile);allHash = new HashSet<String>();fr = new FileReader(ff);br = new BufferedReader(fr);String line = null;while((line=br.readLine())!=null){line = line.trim();if(line != ""){allHash.add(line);}}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {try {if(null != fr){fr.close();}} catch (IOException e) {e.printStackTrace();}try {if(null != br){br.close();}} catch (IOException e) {e.printStackTrace();}}for(String s:allHash){pw.println(s);}pw.close();}jvm内存溢出:Exception in thread "main" ng.OutOfMemoryError: GC overhead limit exceededat java.util.HashMap.newNode(HashMap.java:1734)at java.util.HashMap.putVal(HashMap.java:630)at java.util.HashMap.put(HashMap.java:611)at java.util.HashSet.add(HashSet.java:219)at encode.Main.distinct(Main.java:180)at encode.Main.main(Main.java:215)通过hashCode取模拆分写法:import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.io.PrintWriter;import java.util.HashSet;import java.util.Set;public class DistinctFileUtil {/*** 将⽂件hash取模之后放到不同的⼩⽂件中* @param targetFile 要去重的⽂件路径* @param splitSize 将⽬标⽂件切割成多少份hash取模的⼩⽂件个数* @return*/public static File[] splitFile(String targetFile,int splitSize){File file = new File(targetFile);BufferedReader reader = null;PrintWriter[] pws = new PrintWriter[splitSize];File[] littleFiles = new File[splitSize];String parentPath = file.getParent();File tempFolder = new File(parentPath + File.separator + "test");if(!tempFolder.exists()){tempFolder.mkdir();}for(int i=0;i<splitSize;i++){littleFiles[i] = new File(tempFolder.getAbsolutePath() + File.separator + i + ".txt");if(littleFiles[i].exists()){littleFiles[i].delete();}try {pws[i] = new PrintWriter(littleFiles[i]);} catch (FileNotFoundException e) {e.printStackTrace();}}try {reader = new BufferedReader(new FileReader(file));String tempString = null;while ((tempString = reader.readLine()) != null) {tempString = tempString.trim();if(tempString != ""){//关键是将每⾏数据hash取模之后放到对应取模值的⽂件中,确保hash值相同的字符串都在同⼀个⽂件⾥⾯ int index = Math.abs(tempString.hashCode() % splitSize);pws[index].println(tempString);}}} catch (Exception e) {e.printStackTrace();} finally {if (reader != null) {try {reader.close();} catch (IOException e1) {e1.printStackTrace();}}for(int i=0;i<splitSize;i++){if(pws[i] != null){pws[i].close();}}}return littleFiles;}/*** 对⼩⽂件进⾏去重合并* @param littleFiles 切割之后的⼩⽂件数组* @param distinctFilePath 去重之后的⽂件路径* @param splitSize ⼩⽂件⼤⼩*/public static void distinct(File[] littleFiles,String distinctFilePath,int splitSize){File distinctedFile = new File(distinctFilePath);FileReader[] frs = new FileReader[splitSize];BufferedReader[] brs = new BufferedReader[splitSize];PrintWriter pw = null;try {if(distinctedFile.exists()){distinctedFile.delete();}distinctedFile.createNewFile();pw = new PrintWriter(distinctedFile);Set<String> unicSet = new HashSet<String>();for(int i=0;i<splitSize;i++){if(littleFiles[i].exists()){System.out.println("开始对⼩⽂件:" + littleFiles[i].getName() + "去重");frs[i] = new FileReader(littleFiles[i]);brs[i] = new BufferedReader(frs[i]);String line = null;while((line = brs[i].readLine())!=null){if(line != ""){unicSet.add(line);}}for(String s:unicSet){pw.println(s);}unicSet.clear();System.gc();}}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e1){e1.printStackTrace();} finally {for(int i=0;i<splitSize;i++){try {if(null != brs[i]){brs[i].close();}if(null != frs[i]){frs[i].close();}} catch (IOException e) {e.printStackTrace();}//合并完成之后删除临时⼩⽂件if(littleFiles[i].exists()){littleFiles[i].delete();}}if(null != pw){pw.close();}}}public static void main(String[] args) throws IOException {int splitSize = 20;File[] files = splitFile("G://test/bigfile.txt",splitSize);distinct(files,"G://test/bigfile-distinct.txt",splitSize);}}总结本篇⽂章的内容就到这了,希望⼤家可以喜欢,也希望⼤家可以多多关注的其他精彩内容!。
摘要:介绍了XML应用中合并XML文档的方法与应用,在基于XML的应用中,有着广泛的应用前景。
关键词:XML文档解析器元素在XML应用中,最常用也最实用的莫过于XML文件的读写。
由于XML语义比较严格,起始标记必须配对,所以合并XML文档并不像合并普通文件那样简单。
在JAVA中,如何合并XML文档,下面介绍一种方法。
设计思想应用javax.xml.parsers包中的解析器解析得到两个XML文件的根元素,再采用递归的方式逐一复制被合并文件的元素。
实现过程为了读写XML文件,需要导入如下JAVA包,"//"后为注释说明,笔者的环境是JDK 1.3.1,在JDK 1.4.0中测试也通过。
下面介绍合并XML文档的过程。
先说明一下各个方法的作用。
方法is Merging()有两个参数(分别是目标XML文件名和被合并的XML文件名),调用JAVA的解析器,获得两个要合并的XML文档的Document结构和根元素,并调用方法duplicate()和方法write To()。
当然,在XML文档的合并过程中,可以加入另外的一些判断条件,比如,当被合并XML文档不存在时,将如何处理,等等。
Private Boolean is Merging (String mainFileName, String sub Filename) throws Exception {Boolean isOver = false;DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();Document Builder db = null;Try {Db = dbf.newDocumentBuilder ();} Catch (ParserConfigurationException pce) {System.err.println(pce); //出现异常时,输出异常信息}Document doc_main = null,doc_vice = null;//获取两个XML文件的Document。
Linux命令高级技巧使用split和cat进行文件拆分和合并在Linux命令行下,有很多实用的命令来进行文件的拆分和合并操作。
其中,split命令用于拆分文件,而cat命令则用于合并文件。
本文将介绍split和cat命令的高级技巧,以帮助读者更有效地进行文件拆分和合并。
一、使用split命令进行文件拆分split命令可以将大文件拆分成多个较小的文件,以便于传输和处理。
其基本的命令格式为:```shellsplit [选项] 文件 [输出文件名]```1. 按行数拆分文件:使用split命令可以按照文件的行数来拆分文件。
通过指定参数"-l",可以指定每个拆分后文件的行数。
例如,下面的命令将文件"file.txt"拆分成每个文件包含10行的文件:```shellsplit -l 10 file.txt```执行上述命令后,将生成多个文件,其文件名默认以"xaa"、"xab"、"xac"等递增的形式命名。
2. 按文件大小拆分文件:另一种拆分文件的方式是根据文件的大小进行拆分。
通过指定参数"-b",可以指定每个拆分后文件的大小。
以下命令将文件"file.txt"拆分成每个文件大小为1MB的文件:```shellsplit -b 1m file.txt```同样地,执行该命令后将生成多个文件,并按默认规则命名。
3. 自定义拆分后文件的名称:通过split命令,可以自定义生成的拆分文件的名称。
在命令中使用参数"-d"可以将文件名按数字顺序递增命名。
例如,执行下列命令将文件"file.txt"按行数拆分成每个文件包含10行,并以"part_"作为文件名前缀:```shellsplit -l 10 -d file.txt part_```执行该命令后,将生成多个文件,文件名将以"part_00"、"part_01"、"part_02"等递增命名。
简单的pdf拆分和合并咱来唠唠PDF拆分和合并这事儿,简单得很呢!一、PDF拆分。
1. 为啥要拆分PDF呢?有时候一个PDF文件里内容太多太杂啦,比如说一个PDF文档里既有文章,又有表格,还有一些图片啥的,你可能只想把其中某一部分拿出来单独用,这时候就需要拆分。
2. 怎么拆分呢?如果您用的是Adobe Acrobat(这可是个处理PDF的神器哦),打开PDF文件后,在菜单里找“页面”这个选项,然后就会看到“提取页面”之类的命令。
您可以选择要提取的页面范围,比如说从第3页到第5页,然后点击确定,就把这几页单独拆分成一个新的PDF文件啦。
还有一些免费的小软件也能做到,像Smallpdf在线工具。
您把PDF文件上传到这个网站,然后按照它的提示操作,也能轻松拆分PDF。
比如说您想把一个10页的PDF 按每5页拆成两个小PDF,在它的页面上找到拆分功能,设置一下拆分的方式(按页数啦或者按书签之类的,如果有的话),然后就等着下载拆分好的文件就成。
3. 注意事项。
在使用在线工具拆分的时候,要注意文件的大小限制哦。
要是您的PDF文件太大,可能得先想办法压缩一下再上传拆分。
而且要小心网络情况,万一网络不好,上传或者下载可能会出问题。
二、PDF合并。
1. 合并的用途。
想象一下,您有几个PDF文件,分别是一本书的不同章节,您想把它们整合成一个完整的电子书,这时候合并PDF就派上用场啦。
或者您要把一些相关的报告、文件啥的放到一起方便查看和发送,合并也是个好办法。
2. 合并的方法。
还是说Adobe Acrobat,打开这个软件后,在菜单里有个“组合文件”或者“合并文件”的选项。
然后您就可以把要合并的PDF文件都添加进去,可以调整它们的顺序哦,按照您想要的顺序排好,最后点击合并,就生成一个合并后的大PDF文件啦。
免费的PDFsam(PDF Split and Merge的缩写,名字就很直白呢)这个软件也很方便。
您打开PDFsam,在界面上找到合并功能,然后把要合并的PDF文件一个一个添加进来,设置好保存的路径,点击合并按钮,就大功告成了。
【poi解析excel拆分单元格】1. 前言在日常工作中,处理Excel表格是经常会遇到的任务,而处理Excel表格中的拆分单元格就是其中一个常见的需求。
一些表格中的数据可能被拆分到多个单元格中,这给数据的处理和分析带来了一定的困难。
而POI作为Java操作Excel的主要框架之一,具有强大的功能和灵活的应用,可以很好地解决这一问题。
2. POI简介Apache POI是一个开放源代码的Java库,它能够处理Microsoft Office格式的文件,包括Excel、Word和PowerPoint等。
POI提供了丰富的API,能够方便地读取、创建和修改Office文档。
在处理Excel表格时,POI可以轻松实现对表格的各种操作,包括拆分单元格的处理。
3. 拆分单元格的问题在实际工作中,我们经常会遇到Excel中单元格中数据的拆分问题。
有一列数据中的尊称和通信方式号码被拆分到了不同的单元格中,这给数据分析带来了困难。
这时,我们就需要使用POI来解析Excel表格中的拆分单元格,将数据进行整合,以方便后续的处理和分析。
4. POI解析Excel拆分单元格的步骤使用POI解析Excel拆分单元格,一般包括以下几个步骤:4.1 加载Excel文件:我们需要使用POI库中的相应类,读取Excel文件,获取工作簿(Workbook)对象。
4.2 获取工作表:从工作簿中获取相应的工作表(Sheet)对象,以便后续对表格进行操作。
4.3 遍历单元格:遍历工作表中的所有单元格,找到被拆分的单元格,获取其值和位置信息。
4.4 合并拆分数据:根据拆分单元格的位置信息,将拆分的数据进行合并,整合成完整的数据。
4.5 输出结果:将整合后的数据输出到新的Excel文件中,或者进行其他的处理和分析。
通过以上步骤,可以很好地使用POI解析Excel拆分单元格,使得数据处理更加便捷和高效。
5. 个人观点和理解在实际工作中,我经常会用到POI解析Excel拆分单元格的功能,通过对POI的学习和应用,我深刻地体会到了POI在处理Excel表格时的强大功能和灵活应用。
Java 合并、拆分PPT幻灯片本文将介绍在Java程序中如何来合并及拆分PPT文档的方法。
示例大纲:1. 合并1.1 将指定幻灯片合并到文档1.2 合并多个幻灯片文档为一个文档2. 拆分2.1 按幻灯片每一页单独拆分为一个文档2.2 按指定幻灯片页数范围来拆分为多个文档使用工具:Free Spire.Presentation for Java (免费版)获取方法及jar文件导入:方法1:通过官网下载。
下载后,解压文件。
将lib文件下的Spire.Presentation.jar 文件导入java程序即可。
如下导入效果:方法2:通过maven导入,参考导入方法。
两个PPT测试文档如下:1. 合并1.1 将指定幻灯片合并到文档import com.spire.presentation.*;public class MergeFiles1 {public static void main(String[] args) throws Exception{ //加载文档1,获取第三张幻灯片Presentation ppt1 = new Presentation();ppt1.loadFromFile("test1.pptx");ISlide slide = ppt1.getSlides().get(2);//加载文档2,将文档1中获取的幻灯片作为第二张插入到文档2Presentation ppt2 = new Presentation();ppt2.loadFromFile("test2.pptx");int index = 1;ppt2.getSlides().insert(index,slide);//保存文档2ppt2.saveToFile("merge1.pptx",FileFormat.PPTX_2013);ppt2.dispose();}}合并效果:1.2 合并多个幻灯片为一个文档import com.spire.presentation.*;public class MergeFiles2 {public static void main(String[] args)throws Exception { //加载文档1,文档2Presentation ppt1 = new Presentation();ppt1.loadFromFile("test1.pptx");Presentation ppt2 = new Presentation();ppt2.loadFromFile("test2.pptx");//遍历文档1的所有幻灯片,添加到文档2for(int i = 0;i<ppt1.getSlides().getCount();i++){ppt2.getSlides().append(ppt1.getSlides().get(i)); }//保存文档2ppt2.saveToFile("merge2.pptx",FileFormat.PPTX_2013); ppt2.dispose();}}合并效果:2. 拆分2.1 按幻灯片每一页来拆分import com.spire.presentation.*;public class Split1 {public static void main(String[] args)throws Exception {//加载测试文档1Presentation ppt1 = new Presentation();ppt1.loadFromFile("test1.pptx");//遍历文档1for (int i = 0; i < ppt1.getSlides().getCount(); i++) {//新建一个PPT文档,并移除默认生成的第一页幻灯片Presentation newppt = new Presentation();newppt.getSlides().removeAt(0);//将每一页添加到新建的文档,并保存newppt.getSlides().append(ppt1.getSlides().get(i));newppt.saveToFile(String.format("单页拆分-%1$s.pptx", i), FileFormat.PPTX_2013); }}}拆分结果:2.2 按指定幻灯片页数范围来拆分import com.spire.presentation.*;public class Split2 {public static void main(String[] args) throws Exception{//加载文档1Presentation ppt1 = new Presentation();ppt1.loadFromFile("test1.pptx");//新建文档1,移除默认生成的第一页幻灯片Presentation newppt1 = new Presentation();newppt1.getSlides().removeAt(0);//将文档1中的第一、二页添加到新建的文档1,并保存for (int i = 0; i < 2; i++){newppt1.getSlides().append(ppt1.getSlides().get(i));}newppt1.saveToFile(String.format("拆分1.pptx"), FileFormat.PPTX_2013);//新建文档2,移除默认生成的第一页幻灯片Presentation newppt2 = new Presentation();newppt2.getSlides().removeAt(0);//将文档2中的第三、四页添加到新建的文档2,并保存for(int j = 2;j < 4;j++){newppt2.getSlides().append(ppt1.getSlides().get(j));}newppt2.saveToFile(String.format("拆分2.pptx"), FileFormat.PPTX_2013); }}拆分结果:(本文完)。
Java CellRangeAddress用法一、介绍Java是一种面向对象的编程语言,被广泛应用于企业级开发、移动应用开发、大数据处理等领域。
在Java中,有许多用于处理Excel文件的类库,其中,CellRangeAddress是一个非常重要的类,它用于表示单元格范围的位置区域。
本文将针对Java中CellRangeAddress的用法进行详细介绍,帮助读者更好地理解和应用这个类。
二、CellRangeAddress的基本概念CellRangeAddress代表了一个单元格范围的位置区域,它包含了这个范围的起始行号、结束行号、起始列号和结束列号。
通过CellRangeAddress,我们可以方便地对一个单元格范围进行操作,比如合并单元格、拆分单元格等。
在实际的Excel文件处理中,CellRangeAddress经常被用到,对它的用法进行了解和掌握是非常重要的。
三、CellRangeAddress的创建与初始化在Java中,我们可以通过以下方式来创建和初始化一个CellRangeAddress对象:1. 使用构造方法我们可以通过调用CellRangeAddress的构造方法来创建一个对象,示例代码如下:```javaCellRangeAddress cellRangeAddress = new CellRangeAddress(0, 1, 0, 3);```上面的代码创建了一个范围从第0行第0列到第1行第3列的CellRangeAddress对象。
在初始化时,我们需要传入起始行号、结束行号、起始列号和结束列号作为参数,这样就完成了CellRangeAddress对象的创建和初始化。
2. 使用静态方法除了使用构造方法外,我们还可以通过调用静态方法来创建CellRangeAddress对象,示例如下:```javaCellRangeAddress cellRangeAddress =CellRangeAddress.valueOf("A1:D2");```上面的代码使用了CellRangeAddress类的valueOf静态方法,它接受一个代表单元格范围的字符串作为参数,并返回一个对应的CellRangeAddress对象。
利用cat命令合并和拆分文件在Unix和Linux系统中,cat命令是一个非常有用的命令,它可以用于合并和拆分文件。
本文将介绍如何使用cat命令来完成文件的合并和拆分操作。
一、合并文件要合并多个文件,可以使用cat命令加上文件名,文件将按照cat命令中列出的顺序进行合并。
以下是一个示例:```cat file1.txt file2.txt > merged.txt```上述命令将file1.txt和file2.txt两个文件合并,并将合并后的内容输出到merged.txt文件中。
如果merged.txt文件已经存在,则原有内容将被覆盖。
二、拆分文件要拆分文件,可以使用cat命令的“-n”参数以及重定向符号“>”来实现。
以下是一个示例:```cat file.txt | split -l 100```上述命令将file.txt文件拆分成多个以“x”命名的小文件,每个小文件包含100行内容。
其中,“x”代表字母序列(如“xaa”、“xab”等),以此来区分不同的拆分文件。
另一种拆分文件的方法是使用cat命令的“-b”参数,用于指定每个小文件的字节数。
以下是一个示例:```cat file.txt | split -b 1M```上述命令将file.txt文件拆分成多个大小为1MB的小文件。
同样,每个小文件的名称也会根据字母序列进行命名。
三、合并和拆分文件的应用场景1. 合并日志文件:在系统日志分散记录的情况下,可以使用cat命令将多个日志文件合并为一个文件,方便查看和分析。
2. 拆分大文件:当处理大型文本文件时,拆分文件可以提高操作效率。
例如,将一个几GB的文件拆分成多个小文件,可以更快地进行数据处理和传输。
3. 备份文件:将多个相关文件合并为一个备份文件,可以更方便地进行管理和存储。
总结:通过cat命令,我们可以轻松地合并和拆分文件。
合并文件只需简单地将文件名列在一起并使用重定向符号“>”输出到目标文件中。
<p style=line-height: 150%>import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;import<ahref="index.php?op=article&action=keyword&keyword=java.io">java.io</a>.*; import javax.swing.text.*;import javax.swing.event.*;<p style=line-height: 150%>public class Application1 extends JFrame {String filepath="";JLabel splitSourceSize,coalitionTotalSize,coalitionTotalCount;JTextField SplitSource,SplitTotalCount,SplitEachSize,coalitionSource;//*****************************************申明结束public Application1() {super("工具");this.setSize(640,480);this.setLocation(this.getToolkit().getScreenSize().width/2-this.getWidth()/2,th is.getToolkit().getScreenSize().height/2-this.getHeight()/2);JPanel contentPanel=(JPanel)this.getContentPane();contentPanel.setLayout(new BorderLayout());JTabbedPane jtp=new JTabbedPane();jtp.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);JPanel splitPane=new JPanel(new GridLayout(5,1));JPanel splitPane0=new JPanel(new BorderLayout());splitPane0.add(splitPane,BorderLayout.NORTH);JPanel splitPane1=new JPanel(new FlowLayout(FlowLayout.LEADING));JPanel splitPane2=new JPanel(new FlowLayout(FlowLayout.LEADING));JPanel splitPane3=new JPanel(new FlowLayout(FlowLayout.LEADING));JPanel splitPane4=new JPanel(new FlowLayout(FlowLayout.LEADING));JPanel splitPane5=new JPanel();splitPane1.add(new JLabel("拆分源文件:"));SplitSource=new JTextField(40);splitPane1.add(SplitSource);JButton SplitJButton=new JButton("浏览...");SplitJButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {SplitJButtonClick(e);//选择要拆分的文件}});splitPane1.add(SplitJButton);splitSourceSize=new JLabel("源文件大小:");splitPane2.add(splitSourceSize);splitPane3.add(new JLabel("拆分的数目:"));SplitTotalCount=new JTextField(15);SplitTotalCount.setDocument(new NumberDocument());//限制输入框只能输入数字SplitTotalCount.getDocument().addDocumentListener(new DocumentListener() {//给输入框添加事件public void changedUpdate(DocumentEvent e) {if(!Application1.this.SplitTotalCount.isFocusOwner())return;try{SplitTotalCount_changedUpdate(e);}catch(Exceptionex){System.err.println(ex.toString());}}public void insertUpdate(DocumentEvent e) {if(!Application1.this.SplitTotalCount.isFocusOwner())return;try{SplitTotalCount_changedUpdate(e);}catch(Exceptionex){System.err.println(ex.toString());}}public void removeUpdate(DocumentEvent e) {if(!Application1.this.SplitTotalCount.isFocusOwner())return;try{SplitTotalCount_changedUpdate(e);}catch(Exceptionex){System.err.println(ex.toString());}}});splitPane3.add(SplitTotalCount);splitPane4.add(new JLabel("单文件大小:"));SplitEachSize=new JTextField(15);SplitEachSize.setDocument(new NumberDocument());//限制输入框只能输入数字SplitEachSize.getDocument().addDocumentListener(new DocumentListener() {//给输入框添加事件public void changedUpdate(DocumentEvent e) {if(!Application1.this.SplitEachSize.isFocusOwner())return;try{SplitEachSize_changedUpdate(e);}catch(Exceptionex){System.err.println(ex.toString());}}public void insertUpdate(DocumentEvent e) {if(!Application1.this.SplitEachSize.isFocusOwner())return;try{SplitEachSize_changedUpdate(e);}catch(Exceptionex){System.err.println(ex.toString());}}public void removeUpdate(DocumentEvent e) {if(!Application1.this.SplitEachSize.isFocusOwner())return;try{SplitEachSize_changedUpdate(e);}catch(Exceptionex){System.err.println(ex.toString());}}});splitPane4.add(SplitEachSize);JButton SplitJB=new JButton("开始拆分");SplitJB.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {try{SplitJBClick(e);}catch(Exceptionex){System.err.println(ex.toString());}//<ahref="index.php?op=article&action=keyword&keyword=拆分文件">拆分文件</a> }});splitPane5.add(SplitJB);splitPane.add(splitPane1);splitPane.add(splitPane2);splitPane.add(splitPane3);splitPane.add(splitPane4);splitPane.add(splitPane5);JPanel coalitionPane0=new JPanel(new BorderLayout());JPanel coalitionPane=new JPanel(new GridLayout(4,1));coalitionPane0.add(coalitionPane,BorderLayout.NORTH);JPanel coalitionPane1=new JPanel(new FlowLayout(FlowLayout.LEADING)); JPanel coalitionPane2=new JPanel(new FlowLayout(FlowLayout.LEADING)); JPanel coalitionPane3=new JPanel(new FlowLayout(FlowLayout.LEADING)); JPanel coalitionPane4=new JPanel();coalitionPane1.add(new JLabel("合并首文件:"));coalitionSource=new JTextField(40);coalitionPane1.add(coalitionSource);JButton coalitionJButton=new JButton("浏览(*.000)");coalitionJButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {coalitionJButtonClick(e);//选择要合并的首文件}});coalitionPane1.add(coalitionJButton);coalitionPane.add(coalitionPane1);coalitionTotalSize=new JLabel("文件总大小:");coalitionPane2.add(coalitionTotalSize);coalitionPane.add(coalitionPane2);coalitionTotalCount=new JLabel("文件总数目:");coalitionPane3.add(coalitionTotalCount);coalitionPane.add(coalitionPane3);JButton coalitionJB=new JButton("开始合并");coalitionJB.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {try{coalitionJBClick(e);}catch(Exceptionex){System.err.println(ex.toString());}//<ahref="index.php?op=article&action=keyword&keyword=合并文件">合并文件</a>}});coalitionPane4.add(coalitionJB);coalitionPane.add(coalitionPane4);jtp.add("<a href="index.php?op=article&action=keyword&keyword=拆分文件">拆分文件</a>",splitPane0);jtp.add("<a href="index.php?op=article&action=keyword&keyword=合并文件">合并文件</a>",coalitionPane0);contentPanel.add(jtp,BorderLayout.CENTER);this.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);//当关闭窗口时退出系统}});this.setVisible(true);//********************************************以上为图形界面设计}<p style=line-height: 150%>private void SplitJBClick(ActionEvent e) throws Exception {//<a href="index.php?op=article&action=keyword&keyword=拆分文件">拆分文件</a>操作File file=new File(this.SplitSource.getText());if(!file.exists()) {JOptionPane.showMessageDialog(this,"源文件不存在!","警告",JOptionPane.WARNING_MESSAGE);return;}javax.swing.JFileChooser fjc;fjc=new javax.swing.JFileChooser(filepath);fjc.removeChoosableFileFilter(fjc.getAcceptAllFileFilter());fjc.setDialogTitle("选择保存目录");fjc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);if(fjc.APPROVE_OPTION!=fjc.showOpenDialog(this))return;filepath=fjc.getSelectedFile().getPath();byte[] b=new byte[1024];int read=0;String splitfilename=file.getName();int eachfilesize=Integer.parseInt(this.SplitEachSize.getText());FileInputStream fis=new FileInputStream(file);FileOutputStream fos;String savesplitfilename="";for(longsplitcount=0;splitcount<Long.parseLong(this.SplitTotalCount.getText());splitcou nt++) {savesplitfilename=fjc.getSelectedFile()+"/"+splitfilename+".xiruo.";if(String.valueOf(splitcount).length()==1)savesplitfilename+="00"+splitcount;else if(String.valueOf(splitcount).length()==2)savesplitfilename+="0"+splitcount;elsesavesplitfilename+=splitcount;fos=new FileOutputStream(savesplitfilename);int eachread=b.length;int hasread=0;while((read=fis.read(b,0,eachread))>0) {fos.write(b,0,read);fos.flush();hasread+=read;if(hasread>=eachfilesize&&splitcount!=Long.parseLong(this.SplitTotalCount .getText())-1)break;if(eachfilesize-hasread<(long)b.length)eachread=eachfilesize-hasread;}fos.close();}fos=null;JOptionPane.showMessageDialog(this,"拆分完成");}<p style=line-height: 150%>private void coalitionJBClick(ActionEvent e) throws Exception {//<a href="index.php?op=article&action=keyword&keyword=合并文件">合并文件</a>操作File file=new File(this.coalitionSource.getText());if(!file.exists()) {JOptionPane.showMessageDialog(this,"源文件不存在!","警告",JOptionPane.WARNING_MESSAGE);return;}javax.swing.JFileChooser fjc;fjc=new javax.swing.JFileChooser(filepath);fjc.setDialogTitle("选择保存目录");fjc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);if(fjc.APPROVE_OPTION!=fjc.showOpenDialog(this))return;filepath=fjc.getSelectedFile().getPath();String selfilename=file.getName();selfilename=selfilename.substring(0,stIndexOf("."));Stringsavefile=fjc.getSelectedFile().getAbsolutePath()+"/"+selfilename.substring(0,se stIndexOf("."));if(new File(savefile).exists()) {int javaok=JOptionPane.showConfirmDialog(this,"文件名 "+newFile(savefile).getName()+" 的文件已经存在,你要覆盖原来的文件吗?","警告!",JOptionPane.OK_CANCEL_OPTION);if(javaok==JOptionPane.CANCEL_OPTION)return;}byte[] b=new byte[1024];int read=0;FileOutputStream fos=new FileOutputStream(savefile);FileInputStream fis;File[] f=file.getParentFile().listFiles();for(int i=0;i<f.length;i++) {if(!f[i].getName().startsWith(selfilename))continue;fis=new FileInputStream(f[i]);while((read=fis.read(b,0,b.length))>0) {fos.write(b, 0, read);fos.flush();}fis.close();}fos.close();fos=null;fis=null;JOptionPane.showMessageDialog(this,"合并完成");}<p style=line-height: 150%>private voidSplitTotalCount_changedUpdate(DocumentEvent e) throws Exception {File file=new File(this.SplitSource.getText());if(!file.exists()||this.SplitTotalCount.getText().equals(""))return;long l=Long.parseLong(this.SplitTotalCount.getText());if(l<=0)return;this.SplitEachSize.setText(String.valueOf(file.length()/l));}<p style=line-height: 150%>private void SplitEachSize_changedUpdate(DocumentEvent e) throws Exception {File file=new File(this.SplitSource.getText());if(!file.exists()||this.SplitEachSize.getText().equals(""))return;double l=Double.parseDouble(this.SplitEachSize.getText());if(l<=0)return;this.SplitTotalCount.setText(fileCount((double)file.length(),l));}<p style=line-height: 150%>private void SplitJButtonClick(ActionEvent e) {//选择要拆分的源文件javax.swing.JFileChooser fjc;fjc=new javax.swing.JFileChooser(filepath);fjc.addChoosableFileFilter(new myFilter("*.jpg,*.gif","jpg,gifFiles(*.jpg,*.gif)"));//文件过滤fjc.addChoosableFileFilter(new myFilter("*.rm,*.rmvb","realFiles(*.rm,*.rmvb)"));//文件过滤fjc.addChoosableFileFilter(new myFilter("*.mpg,*.mpeg","mpgFiles(*.mpg,*.mpeg)"));//文件过滤fjc.addChoosableFileFilter(fjc.getAcceptAllFileFilter());if(fjc.APPROVE_OPTION!=fjc.showOpenDialog(this))return;filepath=fjc.getSelectedFile().getPath();File file=fjc.getSelectedFile();double filesize=file.length();String size="";java.text.DecimalFormat df=new java.text.DecimalFormat("#.##");if(filesize>=1024d*1024d*0.8d)size=df.format(filesize/(1024d*1024d))+"MB";else if(filesize>=1024d*0.8d)size=df.format(filesize/1024d)+"KB";elsesize=filesize+"Bytes";this.splitSourceSize.setText("源文件大小: "+size);this.SplitSource.setText(file.getAbsolutePath());this.SplitTotalCount.setText(fileCount(filesize,102400));this.SplitEachSize.setText("102400");}<p style=line-height: 150%>private void coalitionJButtonClick(ActionEvent e) {//选择要合并的首文件javax.swing.JFileChooser fjc;fjc=new javax.swing.JFileChooser(filepath);fjc.removeChoosableFileFilter(fjc.getAcceptAllFileFilter());//移除默认的select Allfjc.addChoosableFileFilter(new myFilter("*.xiruo.000","拆分首文件(*.xiruo.000)"));//文件过滤if(fjc.APPROVE_OPTION!=fjc.showOpenDialog(this))return;filepath=fjc.getSelectedFile().getPath();File file=fjc.getSelectedFile();String selfilename=file.getName();this.coalitionSource.setText(file.getAbsolutePath());selfilename=selfilename.substring(0,stIndexOf("."));File[] f=file.getParentFile().listFiles();double filesize=0;int filetotalcount= 0;for(int i=0;i<f.length;i++) {if(!f[i].getName().startsWith(selfilename))continue;filetotalcount++;filesize+=f[i].length();}String size="";java.text.DecimalFormat df=new java.text.DecimalFormat("#.##");if(filesize>=1024d*1024d*0.8d)size=df.format(filesize/(1024d*1024d))+"MB";else if(filesize>=1024d*0.8d)size=df.format(filesize/1024d)+"KB";elsesize=filesize+"Bytes";this.coalitionTotalSize.setText("文件总大小: "+size);this.coalitionTotalCount.setText("文件总数目: "+filetotalcount);}<p style=line-height: 150%>private String fileCount(double filesize,double eachsize) {int i=(int)(filesize/eachsize)+(filesize%eachsize>0?1:0);return String.valueOf(i);}<p style=line-height: 150%>public class NumberDocument extends PlainDocument {//对文本框的输入进行输入限制,构造PlainDocument实现public void insertString(int offs, String str, AttributeSet a)throws BadLocationException {char[] source = str.toCharArray();char[] result = new char[source.length];int j = 0;for (int i = 0; i < result.length; i++) {if (Character.isDigit(source[i]))result[j++] = source[i];}super.insertString(offs, new String(result, 0, j), a); }}public static void main(String args[]) throws Exception { Font font=new Font("宋体",Font.PLAIN,15);UIManager.put("Button.font",font);UIManager.put("ToggleButton.font",font);UIManager.put("RadioButton.font",font);UIManager.put("CheckBox.font",font);UIManager.put("ColorChooser.font",font);UIManager.put("ToggleButton.font",font);UIManager.put("ComboBox.font",font);UIManager.put("ComboBoxItem.font",font);UIManager.put("InternalFrame.titleFont",font);UIManager.put("Label.font",font);UIManager.put("List.font",font);UIManager.put("MenuBar.font",font);UIManager.put("Menu.font",font);UIManager.put("MenuItem.font",font);UIManager.put("RadioButtonMenuItem.font",font);UIManager.put("CheckBoxMenuItem.font",font);UIManager.put("PopupMenu.font",font);UIManager.put("OptionPane.font",font);UIManager.put("Panel.font",font);UIManager.put("ProgressBar.font",font);UIManager.put("ScrollPane.font",font);UIManager.put("Viewport",font);UIManager.put("TabbedPane.font",font);UIManager.put("TableHeader.font",font);UIManager.put("TextField.font",font);UIManager.put("PasswordFiled.font",font);UIManager.put("TextArea.font",font);UIManager.put("TextPane.font",font);UIManager.put("EditorPane.font",font);UIManager.put("TitledBorder.font",font);UIManager.put("ToolBar.font",font);UIManager.put("ToolTip.font",font);UIManager.put("Tree.font",font);//以上设置是为了解决中文问题UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());//设置可视风格new Application1();}}//************************************************文件选择过滤器class myFilter extends javax.swing.filechooser.FileFilter {String extension="",description="";public myFilter(String extension,String description) {if(extension!=null)this.extension=extension;if(description!=null)this.description=description;}<p style=line-height: 150%>public String getDescription() {return this.description;}<p style=line-height: 150%>public boolean accept(File file) {if(file.isDirectory()||extension.equals(""))return true;String[] s=extension.replaceAll("[*]","").split("[,]");for(int i=0;i<s.length;i++) {if(file.getName().toLowerCase().endsWith(s[i].toLowerCase())) {return true;}}return false;}}。