Как я могу изменить путь этого кода ниже. Файл сохраняется в самой папке, и я хочу изменить его путь к рабочему столу - PullRequest
0 голосов
/ 10 февраля 2020

Как я могу изменить путь этого кода ниже. Файл сохраняется в самой папке, и я хочу изменить его путь на абсолютный путь. Например, если я выберу файл для изменения на рабочем столе, он должен перезаписать файл. Я не знаю, как изменить путь к сохраненному файлу. Я хотел бы изменить путь к каталогу на его абсолютный путь. Всякий раз, когда я нажимаю кнопку рефакторинга, мой измененный файл сохраняется в папке этого 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);
        }

    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...