黑马程序员技术交流社区

标题: 不进行实际的写操作怎么就能向File对象写数据? [打印本页]

作者: 李大强    时间: 2013-2-7 18:02
标题: 不进行实际的写操作怎么就能向File对象写数据?
看老师的java基础视频第22天13节,当要模拟记事本把文本域内的内容存到硬盘上的文件中时,
程序明明都没有调用输出流对文件进行实际的写操作,就根据一个文件的绝对地址创建了一个File对象,怎么竟然存储成功了?真郁闷死了!
import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class MyMenuTest
{

        private Frame f;
        private MenuBar bar;
        private TextArea ta;
        private Menu fileMenu;
        private MenuItem openItem,saveItem,closeItem;


        private FileDialog openDia,saveDia;

        private File file;
        MyMenuTest()
        {
                init();
        }
        public void init()
        {
                f = new Frame("my window");
                f.setBounds(300,100,650,600);

                bar = new MenuBar();

                ta = new TextArea();

                fileMenu = new Menu("文件");
               
                openItem = new MenuItem("打开");
                saveItem = new MenuItem("保存");
                closeItem = new MenuItem("退出");
               
                fileMenu.add(openItem);
                fileMenu.add(saveItem);
                fileMenu.add(closeItem);
                bar.add(fileMenu);

                f.setMenuBar(bar);


                openDia = new FileDialog(f,"我要打开",FileDialog.LOAD);
                saveDia = new FileDialog(f,"我要保存",FileDialog.SAVE);


                f.add(ta);
                myEvent();

                f.setVisible(true);


        }
        private void myEvent()
        {

                saveItem.addActionListener(new ActionListener()
                {
               
                        public void actionPerformed(ActionEvent e)
                        {
                                if(file==null)
                                {
                                        saveDia.setVisible(true);

                                        String dirPath = saveDia.getDirectory();
                                        String fileName = saveDia.getFile();
                                        if(dirPath==null || fileName==null)
                                                return ;
                                        file = new File(dirPath,fileName);//此处实在不解,明明就是创建了一个空的文件对象,根本就没有调用输出流把文本域内的值写进去
                                                                //,怎么文件中就有值了呢?
                                }

                                try
                                {
                                        BufferedWriter bufw  = new BufferedWriter(new FileWriter(file));

                                        String text = ta.getText();

                                        bufw.write(text);
                                        //bufw.flush();
                                        bufw.close();
                                }
                                catch (IOException ex)
                                {
                                        throw new RuntimeException();
                                }
                               
                        }
                });


                openItem.addActionListener(new ActionListener()
                {
                        public void actionPerformed(ActionEvent e)
                        {
                                openDia.setVisible(true);
                                String dirPath = openDia.getDirectory();
                                String fileName = openDia.getFile();
//                                System.out.println(dirPath+"..."+fileName);
                                if(dirPath==null || fileName==null)
                                        return ;

                                ta.setText("");
                                file = new File(dirPath,fileName);

                                try
                                {
                                        BufferedReader bufr = new BufferedReader(new FileReader(file));

                                        String line = null;

                                        while((line=bufr.readLine())!=null)
                                        {
                                                ta.append(line+"\r\n");
                                        }

                                        bufr.close();
                                }
作者: 谢波    时间: 2013-2-7 20:27
      file = new File(dirPath,fileName);//此处实在不解,明明就是创建了一个空的文件对象,根本就没有调用输出流把文本域内的值写进去
                                                                //,怎么文件中就有值了呢?
下面接着的代码  try 代码块中  不是进行了写的操作吗?
作者: 吴在强    时间: 2013-2-7 20:48
这个
try
                                {
                                        BufferedWriter bufw  = new BufferedWriter(new FileWriter(file));

                                        String text = ta.getText();

                                        bufw.write(text);
                                        //bufw.flush();
                                        bufw.close();
                                }
                                catch (IOException ex)
                                {
                                        throw new RuntimeException();
                                }
不是写了嘛,传了一个file这个参数进来了!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2