《黑马程序员》 文件加载与保存

package filetools;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class MenuDemo 
{
	private Frame f;
	private TextArea f_ta;
	//菜单部分的添加
	private MenuBar mb;  //菜单栏
	private Menu mStart,mFile,mRun,mBoot,mHelp,mSub1,mSub2; //菜单
	private MenuItem mi,mi2,mi3,mi4,mi5,mi6,mi7,mis1,mis2;  //菜单条目 

	//文件对话框
	private FileDialog fd;
	private FileDialog fs;
	private File file;  //定义成成员。 如果对象存在。我们就不再创建新的对象了
	
	public MenuDemo(){
		init();
	}

	public void init(){
		f=new Frame("菜单练习");
		f.setBounds(300,100,600,500);
//		f.setLayout(new FlowLayout());  //不写布局让它默认使用边界布局
		//边界布局会自动填充边界的  flowlayout可以拉动但是一抖动之后布局就会发生变化
		//添加菜单
		//先实例化对象
		mb=new MenuBar();
		mFile=new Menu("文件");
		mStart=new Menu("开始");
		mRun=new Menu("运行");
		mBoot=new Menu("启动");
		mHelp=new Menu("帮助");
		mi=new MenuItem("常用工具");
		mi2=new MenuItem("优化工具");
		mi3=new MenuItem("美化工具");
		mi4=new MenuItem("评估工具");
		mi5=new MenuItem("浏览"); //读取选定的文件的内容设置到文本区域中
		mi6=new MenuItem("保存"); //读取文本区域中的内容然后保存在文件中
		mi7=new MenuItem("退出");
	
		//子条目及子菜单的初始化
		mSub1=new Menu("单机软件");
		mSub2=new Menu("网络应用");
		mis1=new MenuItem("办公");
		mis2=new MenuItem("浏览器");
		mSub1.add(mis1);
		mSub2.add(mis2);
        mRun.add(mSub1);
        mRun.add(mSub2);
		
		//文件对话框的初始化
		fd=new FileDialog(f,"文件浏览",FileDialog.LOAD); //可以加载或保存的对话框
		fd.setBounds(300,200,400,200);
		fs=new FileDialog(f,"文件保存",FileDialog.SAVE); //可以加载或保存的对话框
		fs.setBounds(300,200,400,200);

		//把条目添加到菜单。
		//把菜单添加到菜单栏
		mb.add(mFile);
		mb.add(mStart);
		mb.add(mRun);
		mb.add(mBoot);
		mb.add(mHelp);
		//把条目添加到菜单
		mStart.add(mi);
		mStart.add(mi2);
		mStart.add(mi3);
		mStart.add(mi4);
		mFile.add(mi5);
		mFile.add(mi6);
		mFile.add(mi7);

		//把菜单栏添加到窗体
		f.setMenuBar(mb);  //是设置到窗体上
		
		f_ta=new TextArea(28,80);  //设置行和列
		f.add(f_ta);
		event(); //加载事件
		f.setVisible(true);
	}

	public void event(){
		micEvent();
		windowCloseEvent();
		openItemEvent();
		saveItemEvent();
	}
	
	public void openItemEvent(){  //打开条目的事件
		//用于激活打开文件对话框
		mi5.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				fd.setVisible(true);
				String fileDirectory=fd.getDirectory();  //获取文件的路径,其实就是获取目录
				String fileName=fd.getFile();  //获取选中的文件 获取到的是文件名
				System.out.println(fileDirectory+"\r\n"+fileName);
//				try{
				   //把它给封装成路径
//					File file=new File(fileName);
					//把路径和字符串封装成对象
					 file=new File(fileDirectory,fileName);
					if(fileDirectory==null||fileName==null)
						return ;  //返回
					f_ta.setText(""); //清空以前的旧的数据
					//解决思路:
					  //把对象定义成成员。文件对象存在则把数据写入到文件中
					  //如果文件不存在才需要出现选择的对话框。并且文件是写在源文件上的
					loadFile(file);
//				}catch(Exception e){
//					throw new RuntimeException("读取失败");
			
//				}
			}
		});
	
	}

	//保存按钮的事件
	public  void saveItemEvent(){
		mi6.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
					//对象存在则需要执行下面的动作
					if(file==null){
						//激活对话框
						fs.setVisible(true);
						String fileDirectory=fd.getDirectory();
						String fileName=fd.getFile(); 
						if(fileDirectory==null||fileName==null)
								return ;  //返回
							f_ta.setText(""); //清空以前的旧的数据
						 file=new File(fileDirectory,fileName);
					}else  //如果存在则直接写数据
					    mySaveFile(file);  //搞错了
			}
		});
	}

	public void mySaveFile(File f) {
		try{
			//数据是从文本区域中获取到的
			BufferedWriter bw=new BufferedWriter(new FileWriter(f));
			//获取数据
			String str=f_ta.getText();
			bw.write(str);  //直接把字符串写到入文件中
			//bufferedwriter的父类writer可以直接把一个字符串给写入到文件中
			//怎么把我的旧的数据给清空了
			bw.close();
			//为什么一刷新原来的数据就没有了

		}catch(Exception e){
		    throw new RuntimeException("写入失败");
		}		
	}

	//获取文件
	public void loadFile(File file) {  //功能的异常抛给调用者
		try{
			  BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(file))); //把字节流转换成字符流
			//往目标中输出
			String line=null;
			while((line=br.readLine())!=null){
//				System.out.println(line+"\r\n");
//				//把内容设置到textarea中
				f_ta.append(line+"\r\n");
			}
		}catch(Exception e){
		   throw new RuntimeException("读取失败");
		 }
		
	}

	public void windowCloseEvent(){
		f.addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e){
				System.exit(0);
			}
		});
	}

	//菜单的子条目的事件
	public void micEvent(){  //可以调用了
		mi7.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				System.exit(0);
			}
		});
	}

	/*
		菜单的演示
	*/
	public static void main(String[] args) 
	{
		new MenuDemo();
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
黑马程序员苍穹外卖项目中的Nginx配置文件可以根据具体需求进行配置。根据引用\[1\]中的描述,可以通过双击nginx.exe启动Nginx,并在http://localhost/访问前端页面。这意味着Nginx的配置文件应该包含有关前端页面的相关配置。另外,根据引用\[2\]中的描述,Nginx还可以用作反向代理和负均衡,因此配置文件还应包含有关反向代理和负均衡的相关配置。最后,根据引用\[3\]中的描述,苍穹外卖项目还需要与第三方配送公司进行对接和管理,因此配置文件还应包含有关与第三方配送公司对接的相关配置。综上所述,黑马程序员苍穹外卖项目的Nginx配置文件应包含前端页面的相关配置、反向代理和负均衡的相关配置以及与第三方配送公司对接的相关配置。 #### 引用[.reference_title] - *1* [黑马程序员_Java项目实战《苍穹外卖》_Day01_开发环境搭建](https://blog.csdn.net/BallerWang9/article/details/131824385)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [最适合新手的SpringBoot+SSM项目《苍穹外卖》实战—(一)项目概述](https://blog.csdn.net/qq_20185737/article/details/131575898)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值