`

Java I/O通过输入输出流进行文件读写(二)用户界面

阅读更多

       前天写了一篇技术博客把之前自己写的Java I/O读写文件的代码上传了,但后来想想并不妥。东西是能够用了,但是并不是真正意义上的产品。所以今天给前天的不足加上了一些代码,把文件读写真正做成一个产品,一个傻瓜式的谁都能用的产品。

        在这个文件读写的产品上我加上了UI(用户界面):

                   

虽然界面丑了点,但也算是一个入门的产品了。下面上代码:

首先是UI:

package com.czj_IO;

import java.awt.FlowLayout;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;

public class JavaIOUI extends JFrame {

	public static void main(String[] args) {
		JavaIOUI jui = new JavaIOUI();
		jui.init();
	}
	/**
	 * 初始化界面的方法
	 */
	private void init() {
		this.setTitle("文件读写");
		this.setSize(500, 300);
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(3);
		this.setLayout(new FlowLayout());
		addBackground();
		JLabel j1 = new JLabel("    文件名 :        ");
		JTextArea jp1  = new JTextArea(2, 30);
		jp1.setText("这是文件读写实例.txt");
		
		JLabel j2 = new JLabel("文件绝对路径:");
		JTextArea jp2  = new JTextArea(2, 30);
		jp2.setText("E://");
		
		JLabel j3 = new JLabel("     内容  :          ");
		JTextArea jp3  = new JTextArea(5, 30);
		jp3.setText("这是文件读写实例的文件内容。");
		
		this.add(j1);
		this.add(jp1);
		this.add(j2);
		this.add(jp2);
		this.add(j3);
		this.add(jp3);
		
		JButton jb1 = new JButton("写入文件");
		jb1.setBorderPainted(false);
		jb1.setFocusable(false);
		this.add(jb1);
		
		JButton jb2 = new JButton("读取文件");
		jb2.setBorderPainted(false);
		jb2.setFocusable(false);
		this.add(jb2);
		
		JLabel j4 = new JLabel("(必须已有该文件)");
		this.add(j4);

		JLabel j5 = new JLabel();
		this.add(j5);
		
		//给按钮添加监听器
		IOListener il = new IOListener(j5,jp1,jp2,jp3,jb1,jb2);
		jb1.addActionListener(il);
		jb2.addActionListener(il);
		this.setVisible(true);
	}
	/**
	 * 添加背景的方法
	 */
	private void addBackground(){
		ImageIcon image=new ImageIcon(this.getClass().getResource("背景1.jpg"));
		JLabel jlaImage=new JLabel(image);
		jlaImage.setBounds(0, -35, image.getIconWidth(), image.getIconHeight());
		this.getLayeredPane().add(jlaImage,new Integer(Integer.MIN_VALUE));
		
		JPanel contentpane=(JPanel)this.getContentPane();
		contentpane.setOpaque(false);
		}

}

 接下来是监听器:

package com.czj_IO;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTextArea;


public class IOListener implements ActionListener{

	private JTextArea jp1,jp2,jp3;
	private JButton jb1,jb2;
	private JLabel j5;
	public IOListener(JLabel j5, JTextArea jp1,JTextArea jp2,JTextArea jp3, JButton jb1, JButton jb2){
		this.jp1 = jp1;
		this.jp2 = jp2;
		this.jp3 = jp3;
		this.jb1 = jb1;
		this.jb2 = jb2;
		this.j5 = j5;
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getActionCommand().equals(jb1.getText())){
			TestIO ti = new TestIO();
			try {
				ti.writeFile(jp3.getText(),jp2.getText()+jp1.getText());
				j5.setText("文件成功写入!");
			} catch (Exception e1) {
				e1.printStackTrace();
			}
//			System.out.println(jp3.getText());
//			System.out.println(jp2.getText()+jp1.getText());
			
		}else if(e.getActionCommand().equals(jb2.getText())){
			TestIO ti = new TestIO();
			ti.readFile(jp2.getText()+jp1.getText());
			j5.setText("文件成功读出!已在控制台输出!");
		}
	}
}

 再接下来就是上篇博客里已经有的主代码了:

package com.czj_IO;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class TestIO {

	/**
	 * 读文件的方法
	 * @param fName文件绝对路径
	 */
	public void readFile(String fName){
		try {
			FileInputStream  fis = new FileInputStream(fName);
			int n=fis.read();//读取下一个字节
			//循环读写
			while(n!=-1){
				System.out.println("读到的字节是"+n);
			    n = fis.read();
			}
			fis.close();//关闭输入流
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * 写文件的方法
	 * @param msg写入的内容
	 * @param s文件绝对路径
	 * @throws Exception抛出异常
	 */
	public void writeFile(String msg,String s) throws Exception{
		try {
			FileOutputStream fos = new FileOutputStream(s,false);
			byte[] b = msg.getBytes();//得到组成字符串的字节
			fos.write(b);
			fos.close();//关闭输出流 
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		TestIO tjm = new TestIO();
		tjm.readFile("E://类与对象总结.txt");
		try {//此语句运行两次必须改写入文件的文件名或删除上次写入的文件,否则报错(已有该文件)
			tjm.writeFile("hello! 你好!~~~~", "E://写入的文件1.txt");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

 

 

    有些时候别人并不在意你写了多少代码,只在意你通过代码实现了什么功能。而要提现你所实现的东西就必须把这个东西做成可视可用的产品。

 

                                                                                                                            梣梓cenzi

                                                                                                                           2015-0506

  • 大小: 110.9 KB
分享到:
评论

相关推荐

    JAVA_API1.6文档(中文)

    java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供...

    java源码包---java 源码 大量 实例

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    JAVA上百实例源码以及开源项目

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    Java 1.6 API 中文 New

    java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 ...

    java源码包4

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    java api最新7.0

    java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 ...

    java源码包3

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    JAVA上百实例源码以及开源项目源代码

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    java jdk-api-1.6 中文 chmd

    java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供...

    java源码包2

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    JavaAPI1.6中文chm文档 part1

    java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供...

    JavaAPI中文chm文档 part2

    java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    数据压缩,文件传输 Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧...

    Java语言程序设计实验指导书

    7 Java流 用输入输出流实现从一个文本文件中读写简单数据。 8 泛型与容器 编程实现set、list与map的简单应用。 9 图形用户界面 用图形界面工具,结合事件处理机制,实现一个可视化的计算器。 10 JDBC基础 使用JDBC...

    [Java参考文档]

    java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    数据压缩,文件传输 Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧...

Global site tag (gtag.js) - Google Analytics