该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
package day1404作业;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Scanner;
public class Test3wjhb {
public static void main(String[] args) {
/*
* 输入需要合并的文件所在文件夹路径
* 判断是否是文件夹,不是直接return
* 输入需要取出的文件格式后缀
* 调用'pd'方法,取出文件夹内指定后缀的文件
* 输入需要创建的新文件所在目录
* 判断目录中是否已存在该文件,存在则先删除,不存在直接新建文件
* 逐条将目标文件夹中的文件传入指定文件,用new FOS(文件,true)方法累加
*/
System.out.println("输入需要合并文件所在的文件夹路径");
String s1 = new Scanner(System.in).nextLine();
File f1 = new File(s1);
if(! f1.isDirectory()) {
System.out.println("输入的不是文件夹路径");
return;
}
System.out.println("输入需要合并的文件格式后缀");
String hz = new Scanner(System.in).nextLine();
System.out.println("输入合并文件保存的文件夹路径");
String s2 = new Scanner(System.in).nextLine();
File ml = new File(s2);
if(! ml.isDirectory()) {
System.out.println("输入的不是文件夹路径");
return;
}
System.out.println("输入保存文件名");
String wjm = new Scanner(System.in).nextLine();
try {
pd(hz,f1,ml,wjm);
System.out.println("合并成功");
} catch (Exception e) {
System.out.println("合并失败");
e.printStackTrace();
}
}
private static void pd(String hz, File f1,File ml,String wjm) throws Exception{
File[] l1 = f1.listFiles();
for (File f2 : l1) {//取目标文件夹中的文件名
String n1 = f2.getName().toLowerCase();
int indexOf = n1.indexOf('.');//找到文件名中'.'的下标值
String hzm = n1.substring(indexOf+1);//截取后缀
if(hz.equals(hzm)) {
inPut(f2,ml,wjm,hz);
}
}
}
private static void inPut(File f2,File ml,String wjm,String hz) throws Exception{
BufferedInputStream in = new BufferedInputStream
(new FileInputStream(f2));
BufferedOutputStream out = null;
int b;
while((b=in.read())!=-1) {
File wj1 = new File(ml,wjm+'.'+hz);
if(! wj1.exists()) {
out = new BufferedOutputStream
(new FileOutputStream(wj1,true));
}
out.write(b);
}
in.close();
out.close();
}
}
返回错误:
java.lang.NullPointerException
at day1404作业.Test3wjhb.inPut(Test3wjhb.java:76)
at day1404作业.Test3wjhb.pd(Test3wjhb.java:58)
at day1404作业.Test3wjhb.main(Test3wjhb.java:40)
运行结果:
只复制了第一个符合条件的文件到目标文件,然后报错