Сохранение в определенный каталог - PullRequest
0 голосов
/ 15 июля 2011

В настоящее время я пытаюсь сохранить вновь созданный текстовый файл в каталог, указанный пользователем.Однако я не вижу, как это возможно с этой настройкой кода.Где указать, где файл должен быть сохранен?

if(arg.equals(Editor.fileLabels[1])){
    if(Editor.VERBOSE)
        System.err.println(Editor.fileLabels[1] + 
                " has been selected");
    filedialog = new FileDialog(editor, "Save File Dialog", FileDialog.SAVE); 
    filedialog.setVisible(true);
    if(Editor.VERBOSE){
        System.err.println("Exited filedialog.setVisible(true);");
        System.err.println("Save file = " + filedialog.getFile());
        System.err.println("Save directory = " + filedialog.getDirectory());
    }
    File file = new File("" + filedialog.getName());
    SimpleFileWriter writer =     SimpleFileWriter.openFileForWriting(filedialog.getFile() + ".txt"); 
    if (writer == null){
        System.out.println("Failed.");
    }
    writer.print("" + this.editor.getTextArea().getText());
    writer.close();
}

Ответы [ 2 ]

2 голосов
/ 15 июля 2011

FileChooser и FileWriter упрощают работу, вот руководство по Java:

http://download.oracle.com/javase/tutorial/uiswing/components/filechooser.html http://www.abbeyworkshop.com/howto/java/writeText/index.html

Вы называете это так:

JFileChooser fc = new JFileChooser();

int returnVal = fc.showOpenDialog(aComponent);

if (returnVal == JFileChooser.APPROVE_OPTION) 
{
    File toSave = fc.getSelectedFile();

    FileWriter outWriter = new FileWriter(toSave);
    PrintWriter outPrinter = new PrintWriter(outWriter);

    outPrinter.println("" + this.editor.getTextArea().getText());
}
else
{
    //user pressed cancel
}

Помните, что именно класс PrintWriter выполняет фактическую печать.

EDIT:

Если вы хотите, чтобы пользователь выбирал только каталоги, звоните

fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

перед его отображением. Обратите внимание, что в этом случае вам нужно будет указать новый объект File В этом каталоге, чтобы иметь возможность записывать в него текст (попытка записи текста в каталог приведет к исключению IOException).

0 голосов
/ 15 июля 2011

writer.print ("" + this.editor.getTextArea (). GetText ());

Не используйте такие методы. Все текстовые компоненты поддерживают метод write (...). Все, что вам нужно сделать, это получить имя файла, в который вы хотите записать файл.

Что-то вроде:

JtextArea textArea = new JTextArea(....);
....
FileWriter writer = new FileWriter( "TextAreaLoad.txt" ); // get the file name from the JFileChooser.
BufferedWriter bw = new BufferedWriter( writer );
textArea.write( bw );
bw.close();

Если вы не знаете, как использовать средства выбора файлов, прочитайте раздел из руководства Swing по Как использовать средства выбора файлов .

...