2

このコードを作成してJsonファイルに書き込もうとしていますが、どのOS(WindowsまたはMac)でも非表示にするにはどうすればよいですか

File file = new File(System.getProperty("user.home") + File.separator + "Documents" + File.separator + "targetappConfig.json");

if (!(file.exists())) {

  org.json.simple.JSONArray userDetails = new org.json.simple.JSONArray();
  userDetails.add(userDetail);
  jsonObj.put("users", userDetails);
  FileWriter fileWriter = new FileWriter(file);
  fileWriter.write(jsonObj.toString());
  fileWriter.flush();
  fileWriter.close();
}
4

2 に答える 2

2

私がしたことは、OSValidator を作成し、OS ごとにファイルをエンコードしてアプリケーション ディレクトリ (Windows: appdata、Mac: Application Suport) に保存することでした。一番やりやすかったようです。

public class OSValidator {
    private static String OS = System.getProperty("os.name").toLowerCase();

    public static boolean isWindows(){
        return (OS.indexOf("win")>=0);
    }

    public static boolean isMac(){
        return (OS.indexOf("mac")>=0);
    }

    public static boolean isUnix() {
        return (OS.indexOf("nix") >=0 || OS.indexOf("nux") >=0 || OS.indexOf("aix") >= 0);
    }

    public static boolean isSolaris(){
        return (OS.indexOf("sunos") >=0);
    }
}



if (OSValidator.isWindows()) {
            System.out.println("This is Windows");
            file = new File(System.getenv("APPDATA") + File.separator + "TargetApp" + File.separator +"config.json");

            if (!file.exists()) {
                try {
                    FileUtils.forceMkdir(file.getParentFile());
                } catch (IOException ex) {
                    Logger.getLogger(LoginController.class.getName()).log(Level.SEVERE, null, ex);
                }
            }

        } else if (OSValidator.isMac()) {
            System.out.println("This is Mac");

            file = new File(System.getProperty("user.home") + File.separator + "Library" + File.separator + "Application Support"
                    + File.separator + "config.json");
        }
于 2013-02-07T18:12:17.653 に答える
1

隠しファイル属性を実際にサポートする Windows およびその他のオペレーティング システムについては、この質問を参照してください。これを行う方法は複数あります。

Unix/Linux の場合、名前がドットで始まるファイルとフォルダーは非表示と見なされます (.sshたとえば、 など)。これらはデフォルトでは表示されません。確かに、ユーザーはエクスプローラーの「隠しファイルの表示」をオンにしたり-als. それでも、利便性などの理由から、これで十分なはずです。

于 2013-02-07T15:19:07.207 に答える