复制/移动文件程序 - 方法是扫描目标目录而不是源目录

时间:2016-04-15 02:41:44

标签: java netbeans

import java.io.*;
import java.util.Scanner;


public class Javaapplication59 {

public static void main(String[] args) throws Exception {
//Create a new instance of scanner to get user input
Scanner scanner = new Scanner (System.in);

//Ask user to input the directory to be copied
System.out.print("Input directory to be copied.");

//Save input as String
String dirName = scanner.nextLine();

//Ask user to input destination where direction will be copied
System.out.print("Input destination directory will be moved to.");

//Save input as String
String destName = scanner.nextLine();

//Run method to determine if it is a directory or file
isDirFile(dirName, destName);


}//end main

public static void isDirFile (String source, String dest) throws Exception{
//Create a File object for new directory in new location with same name
//as source directory
File dirFile = new File (dest, new File(source).getName());

//Make the new directory
dirFile.mkdirs();

//Create an array of File class objects for each item in the source
//directory
File[] entries; 

//If source directory exists
if (dirFile.exists()){
    //If the source directory is a directory
    if (dirFile.isDirectory()){

        //Get the data and load the array
        entries = new File(source).listFiles();

        //Iterate the array using alternate for statement
        for (File entry : entries){
            if (entry.isFile()){
                copyFile (entry.getAbsolutePath(), dest);
            } //end if
            else {
                isDirFile (entry.getAbsolutePath(), dest);
            }  //end else if
        }//end for
    }//end if
}//end if
else {
    System.out.println("File does not exist.");
} //end else
}

public static void copyFile (String source, String dest) throws Exception {

//declare Files
File sourceFile = null;
File destFile = null;

//declare stream variables
FileInputStream sourceStream = null;
FileOutputStream destStream = null;

//declare buffering variables
BufferedInputStream bufferedSource = null;
BufferedOutputStream bufferedDest = null;

try {
    //Create File objects for source and destination files
    sourceFile = new File (source);
    destFile = new File (dest);

    //Create file streams for the source and destination
    sourceStream = new FileInputStream(sourceFile);
    destStream = new FileOutputStream(destFile);

    //Buffer the file streams with a buffer size of 8k
    bufferedSource = new BufferedInputStream(sourceStream,8182);
    bufferedDest = new BufferedOutputStream(destStream,8182);

    //Use an integer to transfer data between files
    int transfer;

    //Alert user as to what is happening
    System.out.println("Beginning file copy:");
    System.out.println("\tCopying " + source);
    System.out.println("\tTo      " + dest);

    //Read a byte while checking for End of File (EOF)
    while ((transfer = bufferedSource.read()) !=-1){

    //Write a byte
    bufferedDest.write(transfer);
}//end while

}//end try

catch (IOException e){
    e.printStackTrace();
    System.out.println("An unexpected I/O error occurred.");
}//end catch

finally {
    //close file streams
    if (bufferedSource !=null)
        bufferedSource.close();

    if (bufferedDest !=null)
        bufferedDest.close();

    System.out.println("Your files have been copied correctly and "
            + "closed.");
}//end finally
}//end copyDir

}//end class

所以就像标题所说的那样。这个程序从源目录复制并将其移动到目标目录但是我在isDirFile方法中得到一个空异常错误,我假设这意味着所有数据都返回为null的数组,这使我相信目标目录正在扫描,而不是源目录,到目前为止,我无法弄清楚为什么会发生这种情况

编辑:输出

Input directory to be copied. C:/Users/jim/Desktop/pff.txt Input destination directory will be moved to. C:/Users/jim/Desktop/bob Exception in thread "main" java.lang.NullPointerException at javaapplication59.Javaapplication59.main(Javaapplication59.java:31) at javaapplication59.Javaapplication59.main(Javaapplication59.java54) Java Result: 1 BUILD SUCCESSFUL (total time: 13 seconds)

isDirFile(dirName, destName);for (File entry : entries){

0 个答案:

没有答案