Java学习->打开和保存文件操作

TextArea

表示Java文本区,文本区支持用户输入多行文本。
TextArea():构造方法,创建文本区对象的行数和列数,取默认值。

TextArea常见方法

  • public void setText(String s)
    设置文本区中的文本为s
  • public void getText()
    获取文本区中的文本
  • public void append(String s)
    在文本尾部追加文本
  • public void addTextListener(TextListener)
    向文本区中添加文本监视器
    当然还有很多方法,这里并没有详细列出。
    未写的一些方法默认表示:默认文本可编辑等

文本区上的event事件

  1. 当文本区的内容发生变化时(如:插入字符,删除字符),TextEvent类将自动创建一个事件对象。
  2. 发生TextEvent事件的事件源获得监视器的方法是addTextListener(监视器)。
  3. 处理发生TextEvent事件的接口是TextListener,接口中需要被重写的方法是:
    textValueChanged(TextEvent e)

例子:TextArea的使用

        //创建文本域
        //构造方法,创建的文本区的行数和列数取默认值,默认可编辑
        textArea = new TextArea();
        //设置文本区域位置和大小
        textArea.setBounds(0, 0, mf.getWidth(),mf.getHeight());
        textArea.setBackground(Color.WHITE);//设置背景颜色
        //new Font(String 字体,int 风格,int 字号),Font.PLAIN或者0:普通字体
        textArea.setFont(new Font("楷体",0,16));
        mf.add(textArea);
        mf.setVisible(true);

FileDialog

用于创建一个具有指定标题的文件对话框窗口,用于加载或保存文件。
构造函数:
FileDialog(Frame mf,String title,int mode):以指定的标题创建一个读取或保存文件的文件对话框窗口。
mf表示的是窗体对象,表示窗体对象拥有该文件对话框,title表示文件对话框窗口的标题名。
mode为对话框模式,它有两种:

  1. FileDialog.LOAD
    该常量值确定从哪里读取文件。
  2. FileDialog.SAVE
    确定向哪里写入文件。

FileDialog常用方法

  • getDirectory()
    获取该文件对话框的目录。
  • getFile()
    获取该文件对话框所选中的文件
  • setDirectory(String s)
    将该文件对话框窗口的目录设置为指定的目录
  • setFile(String s)
    将该文件对话框窗口的选定文件设置为指定的文件

文件路径 = getDirectory()+getFile()

BufferedReader和BufferedWriter

这两个类各拥有8192字符的缓冲区。当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并置入缓冲区,而之后如果使用了read()方法,会先从缓冲区中进行读取。如果缓冲区中数据不足,再从文件中读取;使用BufferedWriter时,写入的数据并不会先输出到目的地,而是先存储至缓冲区中。如果缓冲区中的数据满了,才会一次对目的地进行写出。
readLine()方法会在读取到使用者的换行字符时,再将整行字符传入。

FileReader

按字符读取流中数据。
构造方法:

  • FileReader(File file)
    在给定从中读取数据的File情况下创建一个新的FileReader。
  • FileReader(String filename)
    在给定从中读取数据的文件名的情况下创建一个新的FileReader。

FileReader常用方法

  • public int read() throws IOException
    读取单个字符,返回一个int型变量代表读取到的字符。
  • public int read(char[] c,int offset,int len)
    读取字符到c数组,返回读取到字符的个数。

例子:打开文件操作

            FileDialog dia_Open = new FileDialog(mf,"打开文件",FileDialog.LOAD);
            dia_Open.setVisible(true);//对话框可见
            BufferedReader in;//文件缓冲流对象
            textArea.setText(null);//清空内容
            /*
             * dia_Open.getDirectory():获取文件上一级路径
             * dia_Open.getFile():获取文件名
             * dia_Open.getDirectory()+dia_Open.getFile():获取文件完整路径
             */
            try {
                in = new BufferedReader(new FileReader(dia_Open.getDirectory()+dia_Open.getFile()));
                try {
                    while((str = in.readLine())!=null) {//in.readLine():读取一整行,到换行符但不包括换行符
                        c = str.toCharArray();//将字符串拆成数组
                        a = new int[str.length()];//存储字符串的ASCII值
                        str = String.valueOf(c);//将char转为String
                        textArea.append(str+"\n");//字符串末尾换行
                    }
                    in.close();//关闭
                    mf.setTitle(dia_Open.getFile()+" - 记事本");
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            } catch (FileNotFoundException e1) {

                e1.printStackTrace();
            }

例子:保存文件操作

            FileDialog dia_Save = new FileDialog(mf,"保存文件",FileDialog.SAVE);
            dia_Save.setVisible(true);
            FileOutputStream out;//文件输出流对象
            //存为txt格式,文件名为输入的字符串
            try {
                out = new FileOutputStream(dia_Save.getDirectory()+dia_Save.getFile()+".txt");
                str = textArea.getText().replace("\n", "\r\n");//获取文本域内容,并将"\n"换成"\r\n",回车换行一次搞定
                c = str.toCharArray();//将字符串拆成char[]数组
                a = new int[str.length()];//用于存储字符串的ASCII值  
                str = String.valueOf(c);//将char转化为String
                try {
                    out.write(str.getBytes());
                    out.flush();
                    out.close();
                    mf.setTitle(dia_Save.getFile()+" - 记事本");

                } catch (IOException e1) {
                    e1.printStackTrace();
                }

            } catch (FileNotFoundException e1) {
                e1.printStackTrace();
            }

猜你喜欢

转载自blog.csdn.net/weixin_42882887/article/details/81908072