そのため、ファイルを新しいファイルにコピーし、そのディレクトリを指定して (作成します)、stackoverflow で見つけたように、apache.commons のFiles.copy関数を使用して、ファイルをコピーする関数を実装したいと考えました。トリックを行います。
私の問題は次のとおりです。1つは機能し、もう1つは機能しない2つのコードを記述しますが、それらは非常に似ているため、違いを捉えられないようです...
最初のメソッドのコードは次のとおりです。
public static void copyToFile2 (String firmFolderName, String allFirmsFolderName, String copy_file_name, String copied_file_name) throws IOException {
File from = new File(copied_file_name) ;
String pathOfDirectoryOfToFile= "Folder/" + allFirmsFolderName +"/" + firmFolderName ;
//String pathOfDirectoryOfToFile = "Folder/fomrs/firm/" ;
String pathOfToFile = pathOfDirectoryOfToFile + "/" + copy_file_name ;
(new File(pathOfDirectoryOfToFile)).mkdir();
File to = new File(pathOfToFile) ;
Files.copy( from.toPath(), to.toPath() );
}
この例では、ディレクトリへのパスを偽造し、そのディレクトリを作成し、最終的にそこにコピー ファイルを作成するいくつかのパラメーターを指定する必要があります。それはNoSuchFileExceptionをスローし、ファイルが存在しないことはわかっていますが、それはいいかもしれないと思い、それ自体を作成しましたが、そうではなかったので、先に進みto.createNewFile();
、確認するために to file インスタンス化の直後に追加しました。したがって、次のコードがあります。
(new File(pathOfDirectoryOfToFile)).mkdir();
File to = new File(pathOfToFile) ;
to.createNewFile();
Files.copy( from.toPath(), to.toPath() );
これで、指定されたアクセスパスが見つからないという IOException が発生しました。
2番目の方法:
public static void copyToFile1 (String firmFolderName, String allFirmsFolderName, String copy_file_name, String copied_file_name) throws IOException {
File from = new File(copied_file_name) ;
String pathOfDirectoryOfToFile= "Folder/" + allFirmsFolderName +"/" + firmFolderName +"/" ;
String pathOfToFile = pathOfDirectoryOfToFile + "/" + copy_file_name ;
(new File("Folder/mdjs55/")).mkdir();
File to = new File("Folder/mdjs55/tm.jsp" ) ;
Files.copy( from.toPath(), to.toPath() );
}
これでうまくいきます。
それで、それは何ですか?私ができない唯一の違いは、copyToFile2 のパスが動的であり、2 番目の静的であることですが、それはどのように問題になるのでしょうか? 私が知っているのは、構築されている単なる文字列です...
PS : System.out.println(to.toPath()) を使用してそのパスをチェックアウトしましたが、うまく構築されています。
よろしくお願いします。