IO流(三)

活鱼会逆流而上,死鱼才会随波逐流。

本讲内容:文件流

例一:写一个记事本

package b;

import java.io.*;
import java.awt.*;
import javax.swing.*;

import java.awt.event.*;

public class NotePad extends JFrame implements ActionListener{
	JTextArea wby;
	JScrollPane gd;
	JMenuBar cd;
	JMenu cd1;
	JMenuItem ycd1,ycd2;
	public static void main(String[] args) {
		NotePad np=new NotePad();

	}

	public NotePad() {
		wby=new JTextArea();
		gd=new JScrollPane(wby);
		cd=new JMenuBar();
		cd1=new JMenu("文件(F)");
		cd1.setMnemonic('F');
		ycd1=new JMenuItem("打开",new ImageIcon("images/1.gif"));
		//对打开按钮注册监听
		ycd1.addActionListener(this);
		ycd1.setActionCommand("open");

		ycd2=new JMenuItem("保存",new ImageIcon("images/3.gif"));
		//对保存按钮做监听
		ycd2.addActionListener(this);
		ycd2.setActionCommand("save");

		cd1.add(ycd1); cd1.add(ycd2);
		cd.add(cd1);
		this.setJMenuBar(cd);

		this.add(gd);

		// 设置窗体属性
        this.setTitle("迷你版记事本—小劲");
        this.setLocation(300, 300);
        this.setSize(500, 400);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	public void actionPerformed(ActionEvent e) {
		if(e.getActionCommand().equals("open")){
			//文件选择组件
			JFileChooser fch=new JFileChooser();
			//设置标题
			fch.setDialogTitle("请选择文件");
			//(null是打开的时候使用窗口默认的方式)
			fch.showOpenDialog(null);
			//使该组件可见
			fch.setVisible(true);

			//得到用户选中的文件全路径
			String filename=fch.getSelectedFile().getAbsolutePath();

			FileReader fr=null;
			BufferedReader br=null;

			try {
				fr=new FileReader(filename);
				br=new BufferedReader(fr);

				//从文件中读取信息并显示文本域中
				String s="";
				String all="";
				while((s=br.readLine())!=null){
					all+=s+"\r\n";
				}
				wby.setText(all);//放置到wby即可
			} catch (Exception e1) {
				e1.printStackTrace();
			}finally{
				try {
					br.close();
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			}
		}else if(e.getActionCommand().equals("save")){
			JFileChooser fch=new JFileChooser();
			fch.setDialogTitle("另存为");
			fch.showSaveDialog(null);
			fch.setVisible(true);

			//用户希望把文件保存到何处,文件的全路径
			String file=fch.getSelectedFile().getAbsolutePath();
			//准备写入到指定文件
			FileWriter fw=null;
			BufferedWriter bw=null;
			try {
				fw=new FileWriter(file);
				bw=new BufferedWriter(fw);
				bw.write(this.wby.getText());
			} catch (IOException e1) {
				e1.printStackTrace();
			}finally{
				try {
					bw.close();
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			}
		}
	}
}

本讲就到这里,Take your time and enjoy it

时间: 2024-10-10 21:26:55

IO流(三)的相关文章

IO流(三)__字节流 标准输入输出流 转换流

一.字节流:FileInputStream 和FileOutputStream 基本操作和字符流类相同,没有flush,但是close还是要的 复制一个字节流文件 private static void copy_1() throws IOException { FileInputStream fis=new FileInputStream("d://17-网络编程(TCP协议-练习-上传图片客户端).avi"); BufferedInputStream bufis=new Buffe

Java学习之IO流三

1.从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中(高效流) 1 /** 2 * 1.从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中 3 * @author vanguard 4 * 5 */ 6 public class Demo01 { 7 public static void main(String[] args) { 8 //键盘输入两个文件夹路径 9 Scanner sc = new Scanner(System.in); 1

IO流(三):字符流及其缓冲流

一.字符流概述 (一).本质 1.字节流操作中文数据不是特别的方便,所以就出现了转换流. 转换流的作用就是把字节流转换字符流来使用. 2.转换流其实是一个字符流. 字符流 = 字节流 + 编码表 (二)编码表 1.编码表简介: ASCII ISO-8859-1 GB2312 GBK GB18030 UTF-8 (三)String中的编码 1.内容: 1)编码 String --> byte[] byte[] getBytes(String charsetName):使用指定的字符集合把字符串编码

IO流 总结三

编码:字符串变成字节数组. 解码:字节数组变成字符串 String --> byte[]; str.getBytes(); byte  --> String: new String(bytep[]); 如果编码的时候产生错误,就放弃 如果解码的时候产生错误,就编一次,解一次(通用方法)[对编码的时候用gbk,解码的 时候用utf-8,这种方法不行,因为utf-8会去找相似的字,结果源码就会变掉] 在记事本里输入联通两个字,就会变成乱码,因为这两个字符合联通的编码形式 符合UTF-8的编码规则

三、JAVA中的IO流,输出流

JAVA中java.io.*;提供数据的流式输入与输出的相关类,IO流是对于输入与输出的抽象,JAVA把这些不同来源和目标的数据都统一抽象为数据流.将输入与输出的数据统一为流的好处是程序不必关心要读取得是文件,还是网络中的数据,而是统一当作IO流来处理. IO流又分为字符流与字节流,主要区别 字节流 按字节处理(一次处理一个字节) 使用类OutputStream 字符流 按字符处理(一次处理一个字符即两个字节) 使用类Writer 其实字节流与字符流处理十分相似(即每次处理的单位不同),好多书上

java基础(二十)IO流(三)

这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是比较清晰的!如果你有需要可以在评论中留下您的邮箱我看到一定会免费发给你的!感谢这个平台让我们大家共同进步吧!! 记住 程序员是无私的!!! 也非常欢迎到我的博客内观看 博客地址:http://www.cnblogs.com/duscl/ /* 1:字符流(掌握) (1)字节流操作中文数据不是特别的方

Java 之IO流及应用

IO流 IO流概述及FileWriter类的使用 FileReader类使用 缓冲流介绍和使用 IO流相关案例 NO.one IO流概述及FileWriter类使用 1.1 IO流概述及分类 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的类都在IO包中 流按流向分为两种:输入流,输出流 1.2 FileWriter类使用 A:打开帮助文档 B:点击显示,找到索引,看到输入框 C:你要学习什么内容,你就在框框里面输入什么内容 举例:Random D:看包

Java笔记(19):IO流(01)

1.try...catch的方式处理异常1 1 package cn.itcast_02; 2 3 /* 4 * 异常:程序出现了不正常的情况. 5 * 6 * 程序的异常:Throwable 7 * 严重问题:Error 我们不处理.这种问题一般都是很严重的,比如说内存溢出. 8 * 问题:Exception 9 * 编译期问题:不是RuntimeException的异常 必须进行处理的,因为你不处理,编译就不能通过. 10 * 运行期问题:RuntimeException 这种问题我们也不处

Java:IO流与文件基础

Java:IO流与文件基础 说明: 本文所有内容包含图片均为MrSaber自己编写,转载请练习我哦. 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象称作 输入流,可以向其中写入一个字节序列的对象称作 输出流. ? 这些字节序列的来源可以是:文件.网络连接.内存块等. ? 抽象类InputStream和OutputStream是构成输入/输出(I/O)的基础. ? 因为面向字节的流

io流的一些特别用法

之前我们老大给我分配了个任务,要我按数据库表结构建下类,看了一下,尼玛37张表,字段多的有二三十个,想想也是蛋疼,不过还好之前我们老师有给我们说过有一种东西叫敏捷开发,那次给我们演示了下通过io流直接建出一个类,所以我果断的把代码翻出来加工了一下,主要的原理就是先建立模型,把格式固定的代码提取出来,把中间可能会变化的部分用一些特殊单词替换(只要不跟平时的会用到的属性名相同或者包含就行),建立成一个模板(也可以直接写在方法里),然后通过io去读这个模板,并通过字符串的替换.截取等操作把这个模板中的