Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 另存为.txt格式_Java - Fatal编程技术网

Java 另存为.txt格式

Java 另存为.txt格式,java,Java,我做了一个记事本程序。问题是它没有以.txt格式保存,而是保存为没有格式的文件。但它可以打开.txt文件。我怎样才能修好它? 这是我的作品 import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.Scanner; import java.io.*; public class NotePad extends JFrame { private JTextArea noteArea

我做了一个记事本程序。问题是它没有以.txt格式保存,而是保存为没有格式的文件。但它可以打开.txt文件。我怎样才能修好它? 这是我的作品

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Scanner;
import java.io.*;

public class NotePad extends JFrame {

    private JTextArea noteArea;


    public static void main(String[] args) {
        NotePad p = new NotePad();
        p.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        p.setSize(500,300);
        p.setVisible(true);
    }


    public NotePad() {
        super("Java Notepad");
        setLayout(new BorderLayout());
        noteArea = new JTextArea("",20,20);
        noteArea.setWrapStyleWord(true);
        noteArea.setLineWrap(true);

        Font font = new Font("sanserif", Font.BOLD,14);
        noteArea.setFont(font);

        JScrollPane scroller = new JScrollPane(noteArea);
        scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        add(scroller,BorderLayout.CENTER);


        JMenuBar menuBar = new JMenuBar();
        JMenu fileMenu = new JMenu("File");
        JMenuItem openMenu = new JMenuItem("Open");
        openMenu.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                JFileChooser openFile = new JFileChooser();
                openFile.showOpenDialog(new NotePad());
                loadFile(openFile.getSelectedFile());
            }


        });
        JMenuItem saveMenu = new JMenuItem("Save");
        saveMenu.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                JFileChooser saveFile = new JFileChooser();
                saveFile.showSaveDialog(new NotePad());
                fileSaved(saveFile.getSelectedFile());
            }

        });

        JMenuItem exitMenu = new JMenuItem("Close");
        exitMenu.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent ae) {
                System.exit(0);
            }

        });

        fileMenu.add(openMenu);
        fileMenu.add(saveMenu);
        fileMenu.add(exitMenu);
        menuBar.add(fileMenu);
        this.setJMenuBar(menuBar);

    }

    public void loadFile(File file) {
        noteArea.setText("");
        try {

            BufferedReader read = new BufferedReader(new FileReader(file));
            String line = null;

            while((line =read.readLine())!=null) {
                noteArea.append(line +"\n");
            }
            read.close();
        }   
        catch (Exception e) {
        System.out.println("Error " + e.toString());
        }
    }


    public void fileSaved(File file) {
        try {
            PrintWriter writer = new PrintWriter(file);
            String[] lines  = noteArea.getText().split("\\n");
            for (String ) {

                writer.println(words);

            }
            writer.close();
        } catch (Exception e) {
            System.out.println("Error " + e.toString());
        }
    }
}

顺便说一句,我不能发表我的问题,因为没有解释的情况下,根据网站。就这样。感谢您的帮助

如果输出文件名不存在,您需要确保将“.txt”扩展名添加到输出文件名的末尾。Java和Windows不会为您这样做

public void fileSaved(File file) {
    String name = file.getPath();
    if (!name.toLowerCase().endsWith(".txt")) {
        name += ".txt";
        file = new File(name);
    }

    //...

这是相当严厉的,因为我没有检查用户是否提供了不同的扩展名,但我认为记事本基本上做了相同的事情:p

每个文件名由两部分组成:-名称和扩展名。 记事本,默认情况下另存为.txt,但情况并非总是如此

您需要按如下所示提供分机:

public void fileSaved(File file) {
String name = file.getPath();
if (!name.toLowerCase().endsWith(".txt")) {
    name += ".txt";
    file = new File(name);
}

为了让它工作。试试看。

您确定输出不是文本格式吗。txt不是一种格式,而是一个扩展名…如果您在Windows上运行,请关闭Windows资源管理器视图选项中的“隐藏已知文件扩展名”。
“顺便说一句,我无法发布我的问题,因为我没有根据站点解释场景”
????什么???我不懂Java,但我猜您需要指定一个可能的文件扩展名列表来保存。@user118:查看JFileChooser API和教程,因为这将准确地解释如何执行您尝试执行的操作。复制这些重要链接,因为您将经常使用它们:,