Как я могу изменить путь этого кода ниже. Файл сохраняется в самой папке, и я хочу изменить его путь на абсолютный путь. Например, если я выберу файл для изменения на рабочем столе, он должен перезаписать файл. Я не знаю, как изменить путь к сохраненному файлу. Я хотел бы изменить путь к каталогу на его абсолютный путь. Всякий раз, когда я нажимаю кнопку рефакторинга, мой измененный файл сохраняется в папке этого java проекта.
package com.protectsoft.layoutrefactor;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
public class LayoutRefactor {
static String filepath = "";
final static private String regexDp = "^.*[\"][0-9]{1,3}dp[\"].*$";
public static String getFilePath() {
return filepath;
}
public static void modifyFile(File file, String oldString, String newString)
{
File f = new File(file.getName());
filepath = f.getAbsolutePath();
File fileToBeModified = new File(filepath);
String oldContent = "";
BufferedReader reader = null;
FileWriter writer = null;
try
{
reader = new BufferedReader(new FileReader(fileToBeModified));
`//Reading all the lines of input text file into oldContent`
String line = reader.readLine();
while (line != null)
{
oldContent = oldContent + line + System.lineSeparator();
line = reader.readLine();
}
`//Replacing oldString with newString in the oldContent`
String newContent = oldContent.replaceAll(oldString, newString);
`//Rewriting the input text file with newContent`
writer = new FileWriter(fileToBeModified);
writer.write(newContent);
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
`//Closing the resources`
reader.close();
writer.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
public static void refactor(int dp,int sp,File file,int dpopt,int spopt) {
File f = new File(file.getName());
filepath = f.getAbsolutePath();
if(dpopt == 0) {
addDp(dp,file);
} else if(dpopt == 1) {
removeDp(dp,file);
}
}
private static void addDp(int dp,File file){
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
//the final layout string output
String finalLine = "";
//for every line in xml layout
while((line = br.readLine()) != null) {
//if line has dp
if(isEditable(line) && line.matches(regexDp)) {
//templine is beggining of string till before first ocurance of " char
String templine = line.substring(0,line.indexOf('"'));
//out is 44dp
String out = line.substring(line.indexOf('"')+1, line.lastIndexOf('"'));
//remove dp
String num = out.replace("dp","");
//and we have integer dp value
int dpvalue = Integer.valueOf(num);
dpvalue += dp;
finalLine += templine + '"'+dpvalue+"dp"+'"' + "\n";
} else {
finalLine += line + "\n";
}
}
if(br != null) {
br.close();
}
PrintWriter out = new PrintWriter(file.getName());
out.println(finalLine);
out.close();
} catch (FileNotFoundException ex) {
Logger.getLogger(LayoutRefactor.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(LayoutRefactor.class.getName()).log(Level.SEVERE, null, ex);
}
}
private static void removeDp(int dp,File file) {
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
//the final layout string output
String finalLine = "";
//for every line in xml layout
while((line = br.readLine()) != null) {
//if line has dp
if(isEditable(line) && line.matches(regexDp)) {
//templine is beggining of string till before first ocurance of " char
String templine = line.substring(0,line.indexOf('"'));
//out is 44dp
String out = line.substring(line.indexOf('"')+1, line.lastIndexOf('"'));
//remove dp
String num = out.replace("dp","");
//and we have integer dp value
int dpvalue = Integer.valueOf(num);
dpvalue -= dp;
finalLine += templine + '"'+dpvalue+"dp"+'"' + "\n";
} else {
finalLine += line + "\n";
}
}
if(br != null) {
br.close();
}
PrintWriter out = new PrintWriter(file.getName());
out.println(finalLine);
out.close();
} catch (FileNotFoundException ex) {
Logger.getLogger(LayoutRefactor.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(LayoutRefactor.class.getName()).log(Level.SEVERE, null, ex);
}
}
}