Java SWT文件保存
Java SWT file saving
我在保存文件时遇到问题,因为我搜索过我写的很好,除了一件事,文件没有真正创建。缺少什么?
Button btnExport = new Button(composite_1, SWT.NONE);
btnExport.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
FileDialog fileSave = new FileDialog(pmComp, SWT.SAVE);
fileSave.setFilterNames(new String[] {"CSV"});
fileSave.setFilterExtensions(new String[] {"*.csv"});
fileSave.setFilterPath("c:\"); // Windows path
fileSave.setFileName("your_file_name.csv");
fileSave.open();
System.out.println("File Saved as: " + fileSave.getFileName());
}
});
btnExport.setBounds(246, 56, 75, 40);
btnExport.setText("Export");
来自 FileDialog :
Instances of this class allow the user to navigate the file system and
select or enter a file name.
对话框不会自动创建文件,您必须检索选择的文件名,然后创建文件。
例如
String name = fileSave.getFileName();
File file = new File(name);
file.createNewFile();
FileDialog
只是用来select文件保存的位置。它不是实际创建或写入文件 - 您必须这样做。
所以
String savePath = fileSave.open();
// TODO your code to write the file to savePath
import java.io.File;
import java.io.IOException;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Shell;
public class Snippet {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new GridLayout(1, false));
Composite composite = new Composite(shell, SWT.NONE);
composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
composite.setLayout(new GridLayout(1, false));
Button btnExport = new Button(composite, SWT.NONE);
btnExport.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
FileDialog fileSave = new FileDialog(shell, SWT.SAVE);
fileSave.setFilterNames(new String[] { "CSV" });
fileSave.setFilterExtensions(new String[] { "*.csv" });
fileSave.setFilterPath("C:\"); // Windows path
fileSave.setFileName("your_file_name.csv");
String open = fileSave.open();
File file = new File(open);
try {
file.createNewFile();
System.out.println("File Saved as: " + file.getCanonicalPath());
} catch (IOException e1) {
e1.printStackTrace();
}
}
});
btnExport.setBounds(246, 56, 75, 40);
btnExport.setText("Export");
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
}
我在保存文件时遇到问题,因为我搜索过我写的很好,除了一件事,文件没有真正创建。缺少什么?
Button btnExport = new Button(composite_1, SWT.NONE);
btnExport.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
FileDialog fileSave = new FileDialog(pmComp, SWT.SAVE);
fileSave.setFilterNames(new String[] {"CSV"});
fileSave.setFilterExtensions(new String[] {"*.csv"});
fileSave.setFilterPath("c:\"); // Windows path
fileSave.setFileName("your_file_name.csv");
fileSave.open();
System.out.println("File Saved as: " + fileSave.getFileName());
}
});
btnExport.setBounds(246, 56, 75, 40);
btnExport.setText("Export");
来自 FileDialog :
Instances of this class allow the user to navigate the file system and select or enter a file name.
对话框不会自动创建文件,您必须检索选择的文件名,然后创建文件。
例如
String name = fileSave.getFileName();
File file = new File(name);
file.createNewFile();
FileDialog
只是用来select文件保存的位置。它不是实际创建或写入文件 - 您必须这样做。
所以
String savePath = fileSave.open();
// TODO your code to write the file to savePath
import java.io.File;
import java.io.IOException;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Shell;
public class Snippet {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new GridLayout(1, false));
Composite composite = new Composite(shell, SWT.NONE);
composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
composite.setLayout(new GridLayout(1, false));
Button btnExport = new Button(composite, SWT.NONE);
btnExport.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
FileDialog fileSave = new FileDialog(shell, SWT.SAVE);
fileSave.setFilterNames(new String[] { "CSV" });
fileSave.setFilterExtensions(new String[] { "*.csv" });
fileSave.setFilterPath("C:\"); // Windows path
fileSave.setFileName("your_file_name.csv");
String open = fileSave.open();
File file = new File(open);
try {
file.createNewFile();
System.out.println("File Saved as: " + file.getCanonicalPath());
} catch (IOException e1) {
e1.printStackTrace();
}
}
});
btnExport.setBounds(246, 56, 75, 40);
btnExport.setText("Export");
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
}