1

ふざけて、swingを使ってメモ帳っぽいアプリを作ってみました。これまでのところ、テキスト ファイルを C:/ に直接保存できないことを除けば、すべて正常に動作しています。D:ドライブのルートを含む他のディスク、またはC:/ディスクのフォルダーでは、それは魅力のように機能します。なぜこうなった?

これは私のコードです:

   file_save.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {

                JFileChooser Chooser = new JFileChooser();
                File DefaultDirectory = new File("C:/");
                File Path;
                int Checker;
                FileFilter text_filter = new FileNameExtensionFilter(
                        "Text File (*txt)", "txt");
                FileFilter another_filter = new FileNameExtensionFilter(
                        "Debug Filter (*boyan)", "boyan");
                //
                Chooser.setCurrentDirectory(DefaultDirectory);
                Chooser.setDialogTitle("Save a file");
                Chooser.addChoosableFileFilter(text_filter);
                Chooser.addChoosableFileFilter(another_filter);
                Chooser.setFileFilter(text_filter);
                Checker = Chooser.showSaveDialog(null);
                //
                if (Checker == JFileChooser.APPROVE_OPTION) {
                    Path = Chooser.getSelectedFile();
                    System.out.println(Path.getAbsolutePath());
                    ;// Just for
                        // debugging.

                    BufferedWriter writer = null;
                    try {
                        writer = new BufferedWriter(new FileWriter(Path
                                .getAbsolutePath()));
                        String[] myString = textArea.getText().split("\\n");
                        for (int i = 0; i < textArea.getLineCount(); i++) {
                            writer.append(myString[i]);
                            writer.newLine(); // SO IT CAN PRESERVE NEW LINES
                                                // (APPEND AND SPLIT ARE ALSO
                                                // THERE
                                                // BECAUSE OF THAT)
                            writer.flush();
                        }

                        JOptionPane.showMessageDialog(null, "File saved.", "",
                                JOptionPane.WARNING_MESSAGE);

                    } catch (IOException e) {
                        JOptionPane.showMessageDialog(null,
                                "File did not save successfuly.", "",
                                JOptionPane.WARNING_MESSAGE);
                    } finally {
                        try {
                            if (writer != null)
                                writer.close();
                        } catch (IOException e) {
                            JOptionPane.showMessageDialog(null,
                                    "File did not save successfuly.", "",
                                    JOptionPane.WARNING_MESSAGE);
                        }
                    }

                }

            }
        });

よろしくお願いします!

4

1 に答える 1

1

通常、 には書き込み権限がありませんC:\

  • 特権ユーザーとしてアプリを起動

    する OS の設計で意図されていないため、これを行うべきではありません。C:\またはシステムドライブのアクセス許可をそれぞれ変更することはできません。

  • のサブディレクトリに保存しますSystem.getProperty("user.home");(方法)

    ユーザーのホームは、たとえば、ドメイン ネットワークにほぼバックアップされたネットワーク フォルダーにすることもできます。特にリモート セッション (RDP、Citrix) の場合、これはよくあることです。

ユーザー フォルダーの外に静的ファイルをインストールする必要がある場合は、特権 (UAC) を上げるように構成されたインストーラーを使用して、1 回実行します。

于 2013-11-05T18:03:40.570 に答える