这可能是重复的,但相信我,在发布这个问题之前,我已经做了很多研究。
我正在做一个文本编辑器项目“Sodalime ",如果用户忘记将这个扩展名放在文件后面,我想将".txt”添加到文件名中,但问题是我不能将"userFile“重命名为"userFile.txt”。
下面的代码只是一个演示,而不是我的项目Sodalime的一部分。
import java.awt.EventQueue;
import javax.swing.JFrame;
import java.awt.BorderLayout;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.JMenuItem;
import javax.swing.JMenu;
import java.awt.FlowLayout;
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import javax.swing.JSplitPane;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JButton;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.Dimension;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.Window;
import javax.swing.JTextPane;
import java.awt.Point;
import javax.swing.JTextArea;
import java.awt.Component;
import java.io.File;
import java.time.temporal.JulianFields;
public class MenuTest {
JFrame frame;
/**
* @wbp.nonvisual location=280,89
*/
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MenuTest window = new MenuTest();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public MenuTest() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(new Rectangle(0, 0, 300, 400));
JButton btnNewButton = new JButton("New button");
btnNewButton.setIcon(new ImageIcon("E:\\Sodalime\\icons\\delete.png"));
btnNewButton.setAlignmentX(Component.CENTER_ALIGNMENT);
frame.getContentPane().add(btnNewButton, BorderLayout.NORTH);
JPanel panel = new JPanel();
frame.getContentPane().add(panel, BorderLayout.CENTER);
final JTextArea textArea = new JTextArea();
textArea.setPreferredSize(new Dimension(250,300));
textArea.setBackground(Color.LIGHT_GRAY);
btnNewButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
JFileChooser fc = new JFileChooser();
int filechoice = fc.showOpenDialog(fc);
if(filechoice == JFileChooser.APPROVE_OPTION){
File chosedfile = fc.getSelectedFile();
FilenewFIle=newFile(chosedfile.getParent()+File.separator+".txt");
if(chosedfile.renameTo(newFIle)) {
textArea.setText("done \n");
textArea.append(chosedfile.getAbsolutePath()+"\n");
textArea.append(newFIle.getAbsolutePath());
}
else textArea.setText("failed");
}
}
});
panel.add(textArea);
}
}
此外,任何建议,以使我的编辑工作正常将受到高度赞赏。这可能是 of OFFTOPIC,但是我的编辑器有几个问题,比如gridLayout留下了大量的Vgap,还有一些其他的,所以我很感谢我为改进我的编码风格和我的项目提出的建议。
我的项目是在github Sodalime-v1.0上
发布于 2016-01-24 03:50:43
使你的:
File newFIle=new File(chosedfile.getParent()+File.separator+".txt");
至:
File newFIle=new File(chosedfile.getParent()+File.separator+chosedfile.getName()+".txt");
你的代码错了。
例如,如果路径为C:/ABC/d
,则代码将使其为C:/ABC/.txt
。您需要在文件分隔符后面添加文件名,以使其成为C:/ABC/d.txt
。
https://stackoverflow.com/questions/34975183
复制