这是书上的原本代码,但是运行会出问题,看看应该如何操作才会出现书上的运行结果,麻烦写下详细步骤
出现什么问题?
package liaoqi;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class FileCutMerge {
public static void main(String[] args) {
// TODO Auto-generated method stub
FileCutMerge tool=new FileCutMerge();
if((args==null)||(args.length!=2)) {
tool.help();
}else if(args[0].startsWith("-c")) {
File f1=new File(args[1]);
if(!f1.exists()) {
System.out.println("制定的文件不存在");
}
int fileSize=Integer.parseInt(args[0].substring(2));
try {
tool.cut(f1,fileSize);
}catch(Exception e) {
e.printStackTrace();
}
}else if(args[0].equals("-m")) {
String prefixname=args[1];
File f=new File(".");
File[]names=f.listFiles(new MyFilesFilter(prefixname));
try {
tool.merge(names);
}catch(Exception e) {
e.printStackTrace();
}
}else {
}
}
public void help() {
System.out.println("错误的命令行格式,正确的是:");
System.out.println("FileCutMerge-c filemane");
System.out.println("或者");
System.out.println("FileCutMerge-m filenameprefix");
}
public void cut(File file,int size)throws Exception{
System.out.println("开始分割文件...");
File parent=file.getParentFile();
long fileLength=file.length();
int filenum=(int)(fileLength/size);
if(fileLength%size!=0) {
filenum+=1;
}
String[]smallfilenames=new String[filenum];
FileInputStream fin=new FileInputStream(file);
byte[]buf=new byte[size];
for(int i=0;i<filenum;i++) {
File outfile=new File(parent,file.getName()+"-"+i);
FileOutputStream fout=new FileOutputStream(outfile);
int count=fin.read(buf);
fout.write(buf,0,count);
fout.close();
smallfilenames[i]=outfile.getName();
}
fin.close();
System.out.println("分割后的文件如下: ");
for(int i=0;i<smallfilenames.length;i++) {
System.out.println(smallfilenames[i]);
}
System.out.println("文件分割完成。");
}
public void merge(File[]files)throws Exception{
System.out.println("开始合并文件...");
String samllfilename=files[0].getName();
int pos=smallfilename.indexOf("-");
String tagetfilename="new-"+samllfilename.substring(0,pos);
System.out.println("合并后的文件为:"+tagetfilename);
File outFile=new File(files[0].getParentFile(),tagetfilename);
FileOutputStream fout=new FileOutputStream(outFile);
for(int i=0;i<files.length;i++) {
FileInputStream fin=new FileInputStream(files[i]);
int b;
while((b=fin.read())!=-1) {
fout.write(b);
}
fin.close();
System.out.println("合并文件完成。");
}
}
class MyFilesFilter implements FileFilter{
String prefix="";
}
@Override
public boolean accept(File f) {
if(f.getName().length()>prefix.length()&&f.getName().startsWith(prefix)) {
return true;
}
return false;
}
}
这是书上源代码