Я хочу открыть текстовый файл .java и вставить новое имя пакета в верхней части файла. После некоторых исследований я обнаружил, что мне нужно создать новый файл, вставить новое имя пакета и скопировать все из старого файла. Все идет нормально.Копирование содержимого файла в новый файл, удаляющий старый файл, переименование нового файла в старый файл
1) 1-я проблема: либо я не делаю это правильно, но как я могу скопировать концы строк правильным образом? Я своего рода ощущение, что копируя я потеряю их, не уверен, но так как я был более сосредоточен на моей другой проблеме
2) Файл я пытаюсь переименовать просто не переименовываются, поэтому в результате проблема, что все файлы, в которые я хочу вставить новый пакет, получают одинаковое имя, поэтому я остаюсь с последним файлом с неправильным именем. Что приводит к потере всех других моих файлов
private static String insertPackage(File file) throws IOException {
//creating package name
File parent = new File(file.getParent());
String packageName = "package " + parent.getName() + ";\n";
//copy old file
File buffer = new File(parent.getPath()+"\\buffer.java");
Charset charset = Charset.forName("UTF-8");
BufferedReader br = Files.newBufferedReader(file.toPath(),charset);
BufferedWriter bw = Files.newBufferedWriter(buffer.toPath(),charset);
bw.write(packageName,0,packageName.length());
String line;
while((line = br.readLine()) != null){
if(!line.startsWith("package ")) {
bw.write(line, 0, line.length());
}
}
//rename new file
// String filepath = file.getPath();
// File rename = new File(filepath);
boolean renamed = true;
if(file.delete()) {
renamed = buffer.renameTo(file);
}
bw.flush();
bw.close();
br.close();
if(!renamed){
return file.getPath();
}
return "";
}
возвращаемое значение только там, чтобы иметь имя, в случае, если что-то не удается. Так что сейчас все.
Это просто функция для вставки имени пакета, удаления старого имени пакета и копирования всего остального в новый файл. После этого он должен удалить старый файл и переименовать новый.
Вы знаете, что IDE могут выполнять такой рефакторинг без необходимости писать сценарий? :) – zapl