这可能是重复的但是相信我在发布这个问题之前做了很多研究
我正在处理文本编辑器项目“Sodalime”,如果用户忘记将此扩展名放在他们的文件后面,我想将“.txt”附加到文件名,但问题是我只是无法重命名“ userFile“to”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);
}
}
我们也非常感谢任何让我的编辑工作正常的建议。这可能是 OFFTOPIC ,但我的编辑器有几个问题 像gridLayout留下了很多Vgap和更多,所以我很感激我的建议,以改善我的编码风格和我的项目
我的项目是在github Sodalime-v1.0
答案 0 :(得分:2)
制作你的:
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