ファイルの名前を変更できますか test.txt
にtest1.txt
?
もし test1.txt
、それは名前が変更されますが存在しますか?
既存のtest1.txtファイルに名前を変更して、test.txtの新しいコンテンツを追加して後で使用できるようにするにはどうすればよいですか?
ファイルの名前を変更できますか test.txt
にtest1.txt
?
もし test1.txt
、それは名前が変更されますが存在しますか?
既存のtest1.txtファイルに名前を変更して、test.txtの新しいコンテンツを追加して後で使用できるようにするにはどうすればよいですか?
回答:
http://exampledepot.8waytrips.com/egs/java.io/RenameFile.htmlからコピー
// File (or directory) with old name
File file = new File("oldname");
// File (or directory) with new name
File file2 = new File("newname");
if (file2.exists())
throw new java.io.IOException("file exists");
// Rename file (or directory)
boolean success = file.renameTo(file2);
if (!success) {
// File was not successfully renamed
}
新しいファイルに追加するには:
java.io.FileWriter out= new java.io.FileWriter(file2, true /*append=yes*/);
要するに:
Files.move(source, source.resolveSibling("newname"));
もっと詳しく:
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
以下はhttp://docs.oracle.com/javase/7/docs/api/index.htmlから直接コピーされます。
ファイルの名前を「newname」に変更して、ファイルを同じディレクトリに保持するとします。
Path source = Paths.get("path/here");
Files.move(source, source.resolveSibling("newname"));
または、ファイルを新しいディレクトリに移動し、同じファイル名を維持し、ディレクトリ内のその名前の既存のファイルを置き換えたいとします。
Path source = Paths.get("from/path");
Path newdir = Paths.get("to/path");
Files.move(source, newdir.resolve(source.getFileName()), REPLACE_EXISTING);
FileオブジェクトでrenameToメソッドを利用したいとします。
最初に、宛先を表すFileオブジェクトを作成します。そのファイルが存在するかどうかを確認してください。存在しない場合は、移動するファイルの新しいFileオブジェクトを作成します。移動するファイルでrenameToメソッドを呼び出し、renameToからの戻り値をチェックして、呼び出しが成功したかどうかを確認します。
あるファイルの内容を別のファイルに追加する場合は、多数のライターが利用できます。拡張機能に基づいて、それはプレーンテキストのように聞こえるので、FileWriterを調べます。
Java 1.6 以前の場合、最も安全でクリーンなAPIはGuavaのFiles.moveだと思います。
例:
File newFile = new File(oldFile.getParent(), "new-file-name.txt");
Files.move(oldFile.toPath(), newFile.toPath());
最初の行は、新しいファイルの場所が同じディレクトリ、つまり古いファイルの親ディレクトリであることを確認し ます。
編集: Java 7を使い始める前にこれを書いたので、非常によく似たアプローチが導入されました。したがって、Java 7以降を使用している場合は、kr37の回答を確認して賛成投票する必要があります。
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import static java.nio.file.StandardCopyOption.*;
Path yourFile = Paths.get("path_to_your_file\text.txt");
Files.move(yourFile, yourFile.resolveSibling("text1.txt"));
「text1.txt」という名前の既存のファイルを置き換えるには:
Files.move(yourFile, yourFile.resolveSibling("text1.txt"),REPLACE_EXISTING);
これを試して
File file=new File("Your File");
boolean renameResult = file.renameTo(new File("New Name"));
// todo: check renameResult
注: renameToの戻り値を常に確認して、名前変更ファイルがプラットフォームに依存している(オペレーティングシステムが異なる、ファイルシステムが異なる)ため、名前変更が失敗してもIO例外をスローしないため、ファイル名が正常であることを確認する必要があります。
はい、File.renameTo()を使用できます。ただし、名前を新しいファイルに変更するときは、正しいパスを忘れないようにしてください。
import java.util.Arrays;
import java.util.List;
public class FileRenameUtility {
public static void main(String[] a) {
System.out.println("FileRenameUtility");
FileRenameUtility renameUtility = new FileRenameUtility();
renameUtility.fileRename("c:/Temp");
}
private void fileRename(String folder){
File file = new File(folder);
System.out.println("Reading this "+file.toString());
if(file.isDirectory()){
File[] files = file.listFiles();
List<File> filelist = Arrays.asList(files);
filelist.forEach(f->{
if(!f.isDirectory() && f.getName().startsWith("Old")){
System.out.println(f.getAbsolutePath());
String newName = f.getAbsolutePath().replace("Old","New");
boolean isRenamed = f.renameTo(new File(newName));
if(isRenamed)
System.out.println(String.format("Renamed this file %s to %s",f.getName(),newName));
else
System.out.println(String.format("%s file is not renamed to %s",f.getName(),newName));
}
});
}
}
}
ファイルの名前を変更するだけの場合は、File.renameTo()を使用できます。
2番目のファイルの内容を最初のファイルに追加する場合は、追加コンストラクタオプションを使用してFileOutputStreamを確認するか、FileWriterについて同じことを行います。ファイルの内容を読み取って追加し、出力ストリーム/ライターを使用してそれらを書き出す必要があります。
Files.move(file.toPath(), fileNew.toPath());
近いあなた(またはオートクローズ)ALLは、リソース(使用のみ動作しますが、InputStream
、FileOutputStream
など)私は同じような状況だと思います file.renameTo
かFileUtils.moveFile
。
フォルダー内の複数のファイルの名前を正常に変更するためのコードは次のとおりです。
public static void renameAllFilesInFolder(String folderPath, String newName, String extension) {
if(newName == null || newName.equals("")) {
System.out.println("New name cannot be null or empty");
return;
}
if(extension == null || extension.equals("")) {
System.out.println("Extension cannot be null or empty");
return;
}
File dir = new File(folderPath);
int i = 1;
if (dir.isDirectory()) { // make sure it's a directory
for (final File f : dir.listFiles()) {
try {
File newfile = new File(folderPath + "\\" + newName + "_" + i + "." + extension);
if(f.renameTo(newfile)){
System.out.println("Rename succesful: " + newName + "_" + i + "." + extension);
} else {
System.out.println("Rename failed");
}
i++;
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
例として実行します。
renameAllFilesInFolder("E:\\Downloads\\Foldername", "my_avatar", "gif");
実行中のコードはこちらです。
private static void renameFile(File fileName) {
FileOutputStream fileOutputStream =null;
BufferedReader br = null;
FileReader fr = null;
String newFileName = "yourNewFileName"
try {
fileOutputStream = new FileOutputStream(newFileName);
fr = new FileReader(fileName);
br = new BufferedReader(fr);
String sCurrentLine;
while ((sCurrentLine = br.readLine()) != null) {
fileOutputStream.write(("\n"+sCurrentLine).getBytes());
}
fileOutputStream.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fileOutputStream.close();
if (br != null)
br.close();
if (fr != null)
fr.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}