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();
}
}
相关推荐
单纯用vb实现的wav文件合并,两个文件要有相同的码率,采样位数,声道等等,总之就是两个正常大小的文件合并是可以的,只要两个文件的总大小小于2GB,那就可以了.这个纯vb6实现,像一般的几十兆的wav文件合并,还是很快的,...
应用场景:使用pandas把多个相同结构的Excel文件合并为一个。 原始数据: 相关代码: import os import pandas as pd # 将文件读取出来放一个列表里面 pwd = 'test' # 获取文件目录 # 新建列表,存放文件名 ...
CSV文件批量合并工具(批量合并多个CSV文件)是一款简洁好用,绿色小巧的CSV文件合并工具。CSV文件批量合并工具非常的使用,让你能够更轻松快捷的进行CSV文件合并工作,非常方便。可以同时批量合并多个CSV文本文件,...
Bin文件合并工具,可支持批量合并
压缩文件里是bin格式文件的合并源码,用c语言实现将两个bin文件合并成一个bin文件,用于mcu开发中bootloader和app的合并
将多个CSV文件合并成一个文件 CSV全称Comma-Separated Values,它是一种通用的,简单的,被广泛采用的一种表格数据格式。采用纯文本格式存储,用分隔符号分开。它格式类似于数据库表格,每一行,中间用分隔符分开,...
Qt小应用,实现bin文件合并,hex文件合并,在线升级用的加密加开头识别字符的bin文件,通过bat文件传入开头识别字符,bin文件合并app偏移参数。MDK中调用这个bat文件,可以实现编译后三个文件自动生成的功能。
把两个bin文件合并成一个bin文件
自己用QT写的hex文件合并小工具,可以合并iap和app的hex文件,主要用于做升级的时候使用,选好iap和app程序后点击生成,自动在小工具当前路径下生成一个新的hex文件,暂时只支持hex文件合并,不支持其他格式,也没有...
TDMS 文件合并。
exe文件合并器exe文件合并器exe文件合并器exe文件合并器exe文件合并器exe文件合并器exe文件合并器
可以将同一文件夹下面的word文件合并成一个word文件
LINUX下C语言实现 两个文件合并成第三个文件
BIN文件合并,多个BIN文件合并一个文件
这是用WPS Excel的JS宏写的文件合并工具,可以通过对话框选择文件,把选中的Excel表格进行合并。里面包含xlsm启用宏的工作簿(js源码)和4个示例的Excel表格文件,下载不需要积分。
简易文件合并器是一款非常使用的文件合并工具,工具为绿色版本,打开即可使用,主要功能为可以帮助您合成各种格式的文件,支持ASCII文本文件和AVI, BMP, JPEG, DOC等格式的转换,需要的朋友赶快来下载吧。...
DXF文件合并工具,基于32位操作系统,只要你的CAD能打得开的图纸文件,就能合并
能在windows上将多个.bin文件合并成一个文件。是用QT写的工具
多文件合并工具 filemerging.rar