1. 程式人生 > 程式設計 >IntelliJ IDEA多屏後窗口不顯示問題解決方案

IntelliJ IDEA多屏後窗口不顯示問題解決方案

IDEA 在接入外接屏且擴充套件的情況下,如果突然拔掉外接屏,就可能會產生IDEA 整個視窗只在螢幕的右側顯示一點點邊框且無法拖拽到當前螢幕的情況。

在不再次接入外接屏的情況下,想要把IDEA視窗拖拽回當前螢幕,可以找到專案中.idea 資料夾下的workspace.xml 檔案
全文搜尋ProjectFrameBounds 關鍵字,修改x和y的值為0或者直接將name="x",name="y"的這兩行刪除即可,然後重啟IDEA即可

IntelliJ IDEA多屏後窗口不顯示問題解決方案

因為經常遇到這種情況,所以自己寫了個java 小工具,一鍵刪除 name="x",name="y" 這兩行記錄,同時生成一個原始檔案的.bak 檔案,入參只需要檔案路徑

其中的核心程式碼邏輯示例如下:

(標籤: 使用Java 實現刪除某個檔案中 包含特定字元的行)

import java.io.*;

/**
 * @author jiashubing
 * @since 2019/5/22
 */
public class DeleteLine {
  public static void main(String[] args) {
    String path = "C:\\Users\\jiashubing\\Desktop\\ttt\\workspace.xml";
    deleteLine(path);
  }

  private static String deleteLine(String path) {
    int a = path.lastIndexOf('/');
    int b = path.lastIndexOf('\\');
    if (a < 0 && b < 0) {
      return "沒有目錄分隔符";
    }

    //刪除原來的備份檔案
    String bakpath = path + ".bak";
    if (deleteFile(bakpath)) {
      return "刪除原始的備份檔案失敗,備份檔案為:" + bakpath;
    }

    String bakpath2 = path + ".bak2";
    if (deleteFile(bakpath2)) {
      return "刪除原始的臨時備份檔案失敗,備份檔案為:" + bakpath2;
    }

    //建立臨時備份檔案
    File bakFile2 = new File(bakpath2);
    boolean nFlag = false;
    try {
      nFlag = bakFile2.createNewFile();
    } catch (IOException e) {
      return "建立臨時備份檔案失敗,備份檔案為:" + bakpath2 + " 錯誤資訊為:" + e.getMessage();
    }
    if (!nFlag) {
      return "建立臨時備份檔案失敗,備份檔案為:" + bakpath2;
    }

    String ans = getAns(path);
    if (ans == null) {
      return "讀取並修改原始檔案失敗";
    }

    if (!addNewFile(bakpath2,ans)) {
      return "將修改後的內容寫入到新檔案失敗";
    }

    File oldFile = new File(path);
    boolean mvFlag = oldFile.renameTo(new File(bakpath));
    if (!mvFlag) {
      return "將原始檔案重新命名成備份檔案失敗";
    }

    boolean mvFlag2 = bakFile2.renameTo(new File(path));
    if (!mvFlag2) {
      return "將臨時備份檔案重新命名成原始檔案失敗";
    }

    return "執行成功";
  }

  private static boolean deleteFile(String bakpath) {
    File bakFile = new File(bakpath);
    if (bakFile.exists() && bakFile.isFile()) {
      boolean delFlag = bakFile.delete();
      if (!delFlag) {
        return true;
      }
    }
    return false;
  }

  private static String getAns(String path) {
    File oldFile = new File(path);
    if (!oldFile.exists() || !oldFile.isFile()) {
      return null;
    }

    StringBuilder ans = new StringBuilder();
    String encoding = "UTF-8";
    try (InputStreamReader read = new InputStreamReader(
        new FileInputStream(oldFile),encoding);
       BufferedReader bufferedReader = new BufferedReader(read)) {
      String lineTxt = null;
      while ((lineTxt = bufferedReader.readLine()) != null) {
        if (lineTxt.contains("name=\"x\"") || lineTxt.contains("name=\"y\"")) {
          continue;
        }
        ans.append(lineTxt + "\n");
      }
    } catch (Exception e) {
      return null;
    }

    return ans.toString();
  }

  private static boolean addNewFile(String path,String ans) {
    File file = new File(path);

    try (Writer out = new FileWriter(file)) {
      out.write(ans);
    } catch (IOException e) {
      return false;
    }

    return true;
  }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。