`

文件合并

阅读更多

package com.imti.work.cla;

import java.awt.FlowLayout;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

/** 多个文件的合并。 */
public class FileMerge extends JFrame implements ActionListener
{

private static final long serialVersionUID = -7749716816572931666L;

private JMenuBar bar = new JMenuBar();

private JMenu menu = new JMenu("文件");

private JMenuItem chooseFolder = new JMenuItem("选择文件夹");

private JLabel label = new JLabel("输入最终文件名:");

private JTextField textfield = new JTextField(12);

private JButton button = new JButton("合并");

private JTextArea area = new JTextArea();

//文件扩展名
private JLabel filter = new JLabel("输入文件扩展名(如:.txt):");
private JTextField filterEdit = new JTextField(12);

private String path = null;
//文件夹下所有的以结尾的文件。
private ArrayList<String> fileNames = null;

/** 构造方法 */
public FileMerge()
{
this.setTitle("文件合并工具");
this.setBounds(new Rectangle(520, 350));
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(new FlowLayout());

chooseFolder.addActionListener(this);
menu.add(chooseFolder);
bar.add(menu);
this.add(bar);

this.add(label);
this.add(textfield);
button.addActionListener(this);
this.add(button);

this.add(filter);
this.add(filterEdit);

area.setColumns(60);
area.setRows(15);
area.setLineWrap(true);
area.setWrapStyleWord(true);
JScrollPane jsp = new JScrollPane(area);
jsp.setVisible(true);
this.add(jsp);

this.pack();
}

public void actionPerformed(ActionEvent e)
{
if(e.getSource().equals(chooseFolder))
{
if("".equals(filterEdit.getText()))
{
JOptionPane.showMessageDialog(this, "输入文件扩展名!","提示",JOptionPane.OK_OPTION);
return;
}
//打开文件夹。
JFileChooser filechooser = new JFileChooser();
filechooser.setDialogType(JFileChooser.DIRECTORIES_ONLY);
filechooser.setDialogTitle("选择一个文件夹");
filechooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int res = filechooser.showOpenDialog(this);
if(res == JFileChooser.APPROVE_OPTION)
{
path = filechooser.getSelectedFile().getAbsolutePath();
if(!"".equals(path) && null != path)
{
area.setText("");
fileNames = new ArrayList<String>();
area.append("文件夹位置:"+path+"/n");
getFiles(path);

for(int i = 0;i < fileNames.size();i++)
{
area.append(fileNames.get(i)+"/n");
}
area.append("总共包含"+fileNames.size()+"个"+filterEdit.getText()+"文件/n");
}
else
{
JOptionPane.showMessageDialog(this, "请选择一个正确的文件夹!","提示",JOptionPane.OK_OPTION);
return;
}
}
}
else if(e.getSource().equals(button))
{
//执行合并操作。
if(null == path)
{
JOptionPane.showMessageDialog(this, "请选择文件夹!","提示",JOptionPane.OK_OPTION);
return;
}
if("".equals(textfield.getText()))
{
JOptionPane.showMessageDialog(this, "输入最终文件名!","提示",JOptionPane.OK_OPTION);
return;
}
else if("".equals(filterEdit.getText()))
{
JOptionPane.showMessageDialog(this, "输入文件扩展名!","提示",JOptionPane.OK_OPTION);
return;
}
else
{
if(null != path)
{
File file = null;
BufferedReader br = null;
FileOutputStream fos = null;
try
{
//要保存到的位置。
file = new File(path+"//"+textfield.getText());
fos = new FileOutputStream(file,true);

for(int i = 0;i < fileNames.size();i++)
{
String filename= fileNames.get(i);
br = new BufferedReader(new FileReader(filename));
String temp = null;
while((temp = br.readLine()) != null)
{
fos.write(temp.getBytes());
fos.write("/r/n".getBytes());
}
br.close();
fos.flush();
}
fos.close();
} catch (IOException e1)
{
e1.printStackTrace();
}
JOptionPane.showMessageDialog(this, "合并完成!","提示",JOptionPane.INFORMATION_MESSAGE);
}
}
}
}

//取得文件夹下所有的以.java结尾的文件。
public void getFiles(String path)
{
File file = new File(path);
//如果是文件夹。
if(file.isDirectory())
{
File[] files = file.listFiles();
for(File f :files)
{
//如果是文件,保存文件名。
if(f.isFile() && f.getName().endsWith(filterEdit.getText()))
{
fileNames.add(f.getPath());
}
else
{
getFiles(f.getAbsolutePath());
}
}
}
}

/**
* @param args
*/
public static void main(String[] args)
{
new FileMerge();
}

}

分享到:
评论

相关推荐

    实现文件合并,尤其对大文件合并很方面

    在IT行业中,文件合并是一项常见的任务,特别是在大数据处理、日志分析、文本处理等领域。本文将详细介绍如何实现文件合并,特别是对于大文件的合并,并提供一个基于VC++的实现示例,供学习参考。 文件合并的基本...

    二进制bin文件合并工具

    当我们面临需要将两个或多个BIN文件合并成一个单一文件的场景时,"二进制bin文件合并工具"就显得尤为重要。 标题所提到的"二进制bin文件合并工具"是一种专门用于处理这种情况的应用程序,它能够将两个独立的BIN文件...

    bin文件合并源码

    "bin文件合并"是解决这一问题的关键技术,它允许我们将Bootloader和App的BIN文件整合成一个单一的BIN文件,以便于一次性烧录。本文将深入探讨这个过程,以及如何使用C语言实现这个功能。 首先,我们要理解BIN文件的...

    TDMS 文件合并 labview代码

    标题 "TDMS 文件合并 labview代码" 涉及到的是使用LabVIEW编程语言来处理TDMS(TDM Streaming)文件的合并操作。TDMS文件是National Instruments公司的LabVIEW环境中用于存储时间序列数据的一种标准格式,它允许用户...

    文件分割器(自带bat文件合并文件).rar

    这个名为"文件分割器(自带bat文件合并文件).rar"的压缩包中,包含了文件分割器软件以及相关的批处理(BAT)文件,用于合并已经分割的文件。批处理文件是一种基于DOS命令的简单脚本,能够自动执行一系列操作,比如...

    文件切割,文件合并

    文件切割后,有时我们需要将这些小文件恢复成原始的大文件,这就需要用到文件合并。合并文件同样可以在Java中通过`FileInputStream`和`FileOutputStream`完成。 2. **Java实现文件合并**: 以下是一个简单的文件...

    多文件合并工具filemerging.rar

    在"多文件合并工具filemerging"的压缩包中,我们只有一个名为"多文件合并工具filemerging"的文件,这可能是一个可执行程序,用于执行文件合并操作。为了使用这个工具,用户通常需要解压文件,然后运行这个程序,按照...

    两个bin文件合并成1个bin文件UBIN.zip

    在某些应用场景下,例如嵌入式系统开发或者固件更新,可能需要将多个BIN文件合并成一个单一的文件,以方便管理和传输。在本例中,"两个bin文件合并成1个bin文件UBIN.zip"的描述,正是指的这样一个过程。 要理解这个...

    DXF文件合并工具

    DXF文件合并工具是一款专为32位操作系统设计的应用程序,其主要功能是将多个DXF(Drawing Exchange Format)文件整合成一个单一的文件。DXF是一种由Autodesk开发的文件格式,主要用于CAD(计算机辅助设计)软件之间...

    WPS的js宏写的Excel文件合并工具,通过文件对话框选择文件来合并表格

    《WPS Excel JS宏实现的文件合并工具详解》 在日常办公中,处理大量Excel表格时,合并工作是一项常见的任务。传统的手动合并方法效率低下,容易出错。为了解决这一问题,WPS Office提供了使用JavaScript(简称JS)...

    使用python将多个excel文件合并到同一个文件的方法

    应用场景:使用pandas把多个相同结构的Excel文件合并为一个。 原始数据:   相关代码: import os import pandas as pd # 将文件读取出来放一个列表里面 pwd = 'test' # 获取文件目录 # 新建列表,存放文件名 ...

    csv合并工具,csv合并器,csv文件合并工具

    CSV文件批量合并工具(批量合并多个CSV文件)是一款简洁好用,绿色小巧的CSV文件合并工具。CSV文件批量合并工具非常的使用,让你能够更轻松快捷的进行CSV文件合并工作,非常方便。可以同时批量合并多个CSV文本文件,...

    多个wav文件合并成一个文件

    单纯用vb实现的wav文件合并,两个文件要有相同的码率,采样位数,声道等等,总之就是两个正常大小的文件合并是可以的,只要两个文件的总大小小于2GB,那就可以了.这个纯vb6实现,像一般的几十兆的wav文件合并,还是很快的,...

    BIN文件合并,多个BIN文件合成一个BIN

    这通常需要使用特定的工具或软件,例如"文件合并助手.exe"。下面,我们将深入探讨这个过程以及相关的知识点: 1. BIN文件结构:BIN文件是一个二进制文件,包含光盘的原始数据流,包括文件系统、文件内容和可能的...

    exe文件合并器exe文件合并器

    EXE文件合并器是一种工具,主要用于将多个可执行文件(.exe)整合到一个单一的可执行文件中。这样的合并通常用于减少程序安装包的大小,简化分发过程,或者在某些情况下,为了隐私和安全目的,将多个功能模块封装在...

    将三个二进制文件合并为一个bin文件带crc校验 VC

    将三个二进制文件合并为一个bin文件,并间隔2k增加crc校验。 运行:双击mergefile.exe 执行合并:将文件dfu_setting.dat+APP1.bin+APP2.bin 合并为MERGE_ota.bin MERGE_ota.bin头部有各个文件合并的起始位置和长度...

    二进制文件合并工具 V1.1 (超好用)

    二进制文件合并工具V1.1是一款专为处理二进制文件而设计的强大软件,其超好用的特性使得用户在操作过程中能够享受到高效便捷的体验。在V1.1版本中,开发者针对前一版本的功能进行了进一步的优化和增强,主要体现在...

    SQL脚本文件合并工具

    这时,“SQL脚本文件合并工具”就显得尤为实用。这款工具专为Oracle数据库设计,能够有效地将多个SQL文本文件整合成一个,便于在SQL*Plus或其他应用程序中一次性执行,大大提高了工作效率。 首先,我们要理解SQL*...

    能在windows上将多个.bin文件合并成一个文件。是用QT写的工具

    标题中的“能在Windows上将多个.bin文件合并成一个文件。是用QT写的工具”表明这是一个使用QT框架开发的软件应用,其主要功能是合并多个.bin格式的二进制文件。QT是一个跨平台的C++应用程序开发框架,它提供了丰富的...

    快播文件合并工具

    快播文件合并工具是一款专为解决快播(QvodPlayer)格式的多媒体文件分割问题而设计的实用软件。在早期的互联网时代,快播因其强大的流媒体播放功能和丰富的资源库,深受用户喜爱。然而,由于某些原因,部分视频文件...

Global site tag (gtag.js) - Google Analytics