Здравствуйте, ребята, прошло какое-то время. Поэтому я работаю над этим приложением, которое позволяет мне создавать и сохранять документы бла-бла-бла. Это не в центре внимания этого вопроса. Поэтому в функции сохранения я решил использовать JFileChooser, чтобы разрешить пользователю выбирать местоположение для сохранения файла.Почему JFileChooser работает таким образом?
Теперь мой JFileChooser запускает правильно, вот код, который:
public void Save() {
choicer.setCurrentDirectory(new java.io.File("C://"));
choicer.setDialogTitle("Save Document");
choicer.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
choicer.setAcceptAllFileFilterUsed(false);
if (choicer.showSaveDialog(new JPanel()) == JFileChooser.APPROVE_OPTION) {
dir = String.valueOf(choicer.getCurrentDirectory());
}
File f = new File(dir + "\\hi.txt");
}
Игнорировать имя hi.txt. Это я остановлюсь позже.
Теперь есть 2 проблемы, которые я нашел. Прежде всего, мне нужно сделать одну папку «глубоко», чтобы сохранить файл. Объяснение:
Допустим, я хочу, чтобы сохранить свой файл в Общественности в пользователей, мой каталог выглядит следующим образом:
C: \ Users \ Public
Теперь мой код добавляет \ hi.txt в параметры файла, не следует сохранять в общей папке. Если бы я просто сохранить там после открытия общественности, я получаю исключение:
java.io.FileNotFoundException: C:\Users\Public (Access is denied)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileWriter.<init>(Unknown Source)
at Spreadr$TableMethods.Save(Spreadr.java:175)
at Spreadr.lambda$1(Spreadr.java:85)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Если я однако открыть папку в общественных местах, а затем нажмите кнопку сохранения, мой каталог теперь выглядит следующим образом:
C: \ Users \ Public \ Downloads
Затем он не сохраняется в папке «Загрузка», а в папке «Общий пользователь».
Это моя первая проблема. Моя вторая - это мини-тип вопроса. Возможно ли, чтобы я назвал свой файл в меню «Сохранить» (меню JFileChooser)?
Я не думаю, что вы хотите использовать 'getCurrentDirectory', попробуйте' getSelectedFile', а также при создании окончательного файла , вы можете использовать две версии аргумента файла. 'new File (dir, «hi.txt»); ' – matt