[英]Using JFileChooser to read a file name
我正在使用文件輸入流來輸入文件
String filename="D:\\abc.txt";
File file = new File(filename);
到目前為止,它仍然可以正常工作。 現在,我想使用JFileChooser
輸入文件名,然后執行相同的操作。 但是JFileChooser
返回的字符串是這樣的D:\\abc.txt
。 我的代碼如下
public static String fileChose()
{
JFileChooser fc= new JFileChooser();
int ret = fc.showOpenDialog(null);
if (ret== JFileChooser.APPROVE_OPTION)
{
File file = fc.getSelectedFile();
String filename= file.getAbsolutePath();
return filename;
}
else
return null;
}
問題在於需要用\\\\
而不是\\
分隔文件名。 我不能以這種方式直接從JFileChooser輸入文件名以便直接將其用作參數
File file = new File(Classname.fileChose());
String s = fileChooser.getSelectedFile()
public String removeExtension(String s) {
String separator = System.getProperty("file.separator");
String filename;
int lastSeparatorIndex = s.lastIndexOf(separator);
if (lastSeparatorIndex == -1) {
filename = s;
} else {
filename = s.substring(lastSeparatorIndex + 1);
}
int extensionIndex = filename.lastIndexOf(".");
if (extensionIndex == -1)
return filename;
return filename.substring(0, extensionIndex);
}
試用
if (code == JFileChooser.APPROVE_OPTION) {
File selectedFile = chooser.getSelectedFile();
fileName = selectedFile.getName();
FileInputStream fis =
new FileInputStream(selectedFile);
InputStreamReader in =
new InputStreamReader(fis, Charset.forName("UTF-8"));
char[] buffer = new char[1024];
int n = in.read(buffer);
String text = new String(buffer, 0, n);
myPane.setText(text);
in.close();
}
演示:
public class JEditorPaneFileChooser implements ActionListener {
JFrame myFrame = null;
JEditorPane myPane = null;
JMenuItem cmdOpen = null;
JMenuItem cmdSave = null;
String dirName = "\\herong\\swing\\";
String fileName = "JEditorPane.txt";
public static void main(String[] a) {
(new JEditorPaneFileChooser()).test();
}
private void test() {
myFrame = new JFrame("JEditorPane JFileChooser Test");
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.setSize(300,200);
myPane = new JEditorPane();
myPane.setContentType("text/plain");
myPane.setText(
"Hello computer! - \u7535\u8111\u4F60\u597D\uFF01\n"
+ "Welcome to Herong's Website!\n"
+ "\u6B22\u8FCE\u4F60\u8BBF\u95EE\u548C\u8363\u7F51\u7AD9"
+ "\uFF01\nwww.herongyang.com");
myFrame.setContentPane(myPane);
JMenuBar myBar = new JMenuBar();
JMenu myMenu = getFileMenu();
myBar.add(myMenu);
myFrame.setJMenuBar(myBar);
myFrame.setVisible(true);
}
private JMenu getFileMenu() {
JMenu myMenu = new JMenu("File");
cmdOpen = new JMenuItem("Open");
cmdOpen.addActionListener(this);
myMenu.add(cmdOpen);
cmdSave = new JMenuItem("Save");
cmdSave.addActionListener(this);
myMenu.add(cmdSave);
return myMenu;
}
public void actionPerformed(ActionEvent e) {
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File(dirName));
chooser.setSelectedFile(new File(fileName));
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
FileNameExtensionFilter filter = new FileNameExtensionFilter(
".txt and .java files", "txt", "java");
chooser.setFileFilter(filter);
Object cmd = e.getSource();
try {
if (cmd == cmdOpen) {
int code = chooser.showOpenDialog(myPane);
if (code == JFileChooser.APPROVE_OPTION) {
File selectedFile = chooser.getSelectedFile();
fileName = selectedFile.getName();
FileInputStream fis =
new FileInputStream(selectedFile);
InputStreamReader in =
new InputStreamReader(fis, Charset.forName("UTF-8"));
char[] buffer = new char[1024];
int n = in.read(buffer);
String text = new String(buffer, 0, n);
myPane.setText(text);
in.close();
}
} else if (cmd == cmdSave) {
int code = chooser.showOpenDialog(myPane);
if (code == JFileChooser.APPROVE_OPTION) {
File selectedFile = chooser.getSelectedFile();
fileName = selectedFile.getName();
FileOutputStream fos =
new FileOutputStream(selectedFile);
OutputStreamWriter out =
new OutputStreamWriter(fos, Charset.forName("UTF-8"));
out.write(myPane.getText());
out.close();
}
}
} catch (Exception f) {
f.printStackTrace();
}
}
}
參考: http : //www.herongyang.com/Swing/JEditorPane-File-Chooser-Dialog-Box.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.