📄 filecutter.java
字号:
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FileCutter extends JFrame implements ActionListener{
String sFile,Dir;
JLabel tb=new JLabel("分割大小(MB):");
JTextField len=new JTextField(5);
JButton open=new JButton("Open");
JButton cut=new JButton("Cut");
JButton combination=new JButton("Combination");
JTextField tf=new JTextField(30);
JFileChooser fg = new JFileChooser(".");
JProgressBar prss=new JProgressBar(0,100);
JPanel p1=new JPanel();
JPanel p2=new JPanel();
File outFile;
//JProgressBar prss=new JProgressBar ();
public FileCutter() {
Container contentPane = this.getContentPane();
contentPane.setLayout(new BorderLayout());
p1.add(tf);
p1.add(open);
p2.add(tb);
p2.add(len);
p2.add(cut);
p2.add(combination);
len.setText("1");
open.addActionListener(this);
cut.addActionListener(this);
combination.addActionListener(this);
contentPane.add("North",p1);
contentPane.add("Center",p2);
contentPane.add("South",prss);
//contentPane.add("South",prss);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==open)
{
FileDialog dlg=new FileDialog(this,"Open",FileDialog.LOAD);
dlg.setVisible(true);
tf.setText(dlg.getDirectory()+dlg.getFile());
}
if(e.getSource()==cut)
{
new Thread()
{
public void run()
{
int coun=0,i=0,j=0,k=0;
String a[]={".#000",".#00",".#0",".#"};
long clen,tole=0,flen,max,LenCount=0;
byte buffer[]=new byte[1024*1024];
File inFile=new File(tf.getText());
flen=inFile.length();
clen=Integer.parseInt(len.getText())*1024*1024;
max=(int)flen/clen;
try
{
InputStream in =new FileInputStream(inFile);
BufferedInputStream bm=new BufferedInputStream(in,1024*10240);
ProgressMonitorInputStream pm =new ProgressMonitorInputStream(p2,"Cutting the big file",bm);
int c;
for(;i<max;i++)
{
if(i<10){coun=0;}
else if(i<100){coun=1;}
else if(i<1000){coun=2;}
else if(i<10000){coun=3;}
File outFile = new File(tf.getText()+a[coun]+Long.toString(i)+".pier");
RandomAccessFile out=new RandomAccessFile(outFile,"rw");
tole+=clen;
for(;j<tole;)
{
if((k=pm.read(buffer))!=-1)
{
out.write(buffer,0,k);
j+=k;
}
}
//System.out.print(LenCount+",");
//System.out.print("tole"+tole+",");
out.close();
//buffer=new byte[1024];
}
if(i<10){coun=0;}
else if(i<100){coun=1;}
else if(i<1000){coun=2;}
else if(i<10000){coun=3;}
File outFile = new File(tf.getText()+a[coun]+Long.toString(i)+".pier");
RandomAccessFile out=new RandomAccessFile(outFile,"rw");
//int j=0;
for(;j<flen;)
{
if((k=pm.read(buffer))!=-1)
{
out.write(buffer,0,k);
j+=k;
}
}
out.close();
pm.close();
}
catch(IOException ex)
{
JOptionPane.showMessageDialog(null,ex.toString(), "错误", JOptionPane.ERROR_MESSAGE);
}
}
}.start();
}
if(e.getSource()==combination)
{
prss.setValue(0);
sFile=tf.getText();
int num=sFile.indexOf('#');
//System.out.println(num);
sFile=sFile.substring(0,num-1);
FileDialog dlg=new FileDialog(this,"Save",FileDialog.SAVE);
dlg.setFile(sFile);
dlg.setVisible(true);
outFile=new File(dlg.getDirectory()+dlg.getFile());
Dir=dlg.getDirectory();
new Thread()
{
public void run()
{
int num=0,fl;
String n,tt[],sDir;
byte buffer[]=new byte[1024*1024];
sDir=Dir;
File inFile=new File(tf.getText());
//System.out.println(outFile);
File fList=new File(inFile.getParent());
tt = fList.list(new FilenameFilter()
{
public boolean accept(File dir,String name)
{
String rr = new File(name).toString();
return rr.endsWith("pier");
}
});
for(int i=0;i<tt.length;i++)
{
System.out.println(sDir+tt[i]);
}
System.out.println(tt.length);
try{
RandomAccessFile out=new RandomAccessFile(outFile,"rw");
int j=100/tt.length;
for (int i=0;i<tt.length;i++)
{
inFile=new File(sDir+tt[i]);
RandomAccessFile in=new RandomAccessFile(inFile,"r");
int c;
while((c=in.read(buffer))!=-1)
{
out.write(buffer,0,c);
}
prss.setValue(i*j);
in.close();
}
prss.setValue(100);
//bmo.close();
//pmo.close();
out.close();
javax.swing.JOptionPane.showMessageDialog(null,"完成", "完成", JOptionPane.INFORMATION_MESSAGE);
}
catch(IOException ex)
{
JOptionPane.showMessageDialog(null,ex.toString(), "错误", JOptionPane.ERROR_MESSAGE);
}
}
}.start();
}
}
public static void main(String[] args) {
FileCutter frame = new FileCutter();
frame.setSize(500, 150);
frame.setTitle("FileCutter");
frame.setVisible(true);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -