JAVA入门到精通-第46讲-IO编程.记事本开发

IO编程-记事本开发



fis.read(bytes)

字节数组:

通过fis把文件里面的1800个字符,尽可能的读,

最多读1024个。记录一下,0-1024记录到bytes;

再去读的首,fis.read试图1024个字节,不够了,

第二次读了776个,n=776;(0,776);

第三次,又准备读1024,这次一个读不到,返回-1;

退出循环;


JMenuBar

菜单条是一个JMenuBar;

JMenu

File是一个JMenu;

JMenuItem

下面这些选项是JMenuItem;

一层放一层的:


//点击打开,ActionListener,重写方法

actionPerformed

//创建文件选择组件

//swing组件---JFileChooser

setDialogTitle("请选择文件...")

对话框:

跳出来的组件JAVA设计者已经做好了;

//得到相关文件的路径:

getSelectedFile().getAbsolutePath();

记事本读取:

br.readLine( )

//保存-save

addActionListener(this);

setActionCommand("save");

//保存文件到何处:

//准备写入到指定文件即可-write出去:

//关闭文件流

---------------------------------------

java文件编程--常用io流

常用io流--文件字符流

案例[Io05.java](文件字符输入、输出流,目的:FileReader、FileWriter类)读取一个文件并写入到另一个文件中char[]来中转

/**
* File类的基本用法
* io流--文件字符流,只能用于完全为字符的文件
* TXT文件拷贝--FileReader类与 FileWriter类
*/
import java.io.*;
public class Io05 {
public static void main(String[] args) {
//文件取出字符流对象(输入流)
FileReader fr=null;
//写入到文件(输出流)
FileWriter fw=null;
try {
//创建fr对象
fr=new FileReader("e:\\ff\\hsp.txt");
//创建输出对象
fw=new FileWriter("e:\\hsp.txt");
//创建字符数组
char c[]=new char[1024];
int n=0;
//读入到内存
while((n=fr.read(c))!=-1){
//控制台输出TXT文件内容
String s=new String(c,0,n);
System.out.println(s);
fw.write(c, 0, n);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
fr.close();
fw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

40

1

/**

2

 * File类的基本用法

3

 * io流--文件字符流,只能用于完全为字符的文件

4

 * TXT文件拷贝--FileReader类与 FileWriter类

5

 */

6

import java.io.*;

7

public class Io05 {

8

    public static void main(String[] args) {

9

        //文件取出字符流对象(输入流)

10

        FileReader fr=null;

11

        //写入到文件(输出流)

12

        FileWriter fw=null;

13

        try {

14

            //创建fr对象

15

            fr=new FileReader("e:\\ff\\hsp.txt");

16

            //创建输出对象

17

            fw=new FileWriter("e:\\hsp.txt");

18

            //创建字符数组

19

            char c[]=new char[1024];

20

            int n=0;

21

            //读入到内存

22

            while((n=fr.read(c))!=-1){

23

                //控制台输出TXT文件内容

24

                String s=new String(c,0,n);

25

                System.out.println(s);

26

                fw.write(c, 0, n);

27

            }

28

        } catch (Exception e) {

29

            e.printStackTrace();

30

        }finally{

31

            try {

32

                fr.close();

33

                fw.close();

34

            } catch (Exception e) {

35

                e.printStackTrace();

36

            }

37

        }

38

    }

39

}

40


----------------------------------------------

常用io流--缓冲字符流

为了提高效率引入了缓冲字符流

案例[Io06.java](文件缓冲字符流,目的:BufferedReader和BufferedWriter类介绍,直接操作String)

/**
* File类的基本用法
* io流--缓冲字符流
* BufferedReader类与BufferedWriter类
*/
import java.io.*;
public class Io06 {
public static void main(String[] args) {
BufferedReader br=null;
BufferedWriter bw=null;
try {
//先创建FileReader对象
FileReader fr=new FileReader("e:\\ff\\hsp.txt");
br=new BufferedReader(fr);

//创建FileWriter对象
FileWriter fw=new FileWriter("e:\\hsp1.txt");
bw=new BufferedWriter(fw);

//循环读取
String s="";
while((s=br.readLine())!=null){
//输出到磁盘
bw.write(s+"\r\n");
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
br.close();
bw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

1

/**

2

 * File类的基本用法

3

 * io流--缓冲字符流

4

 * BufferedReader类与BufferedWriter类

5

 */

6

import java.io.*;

7

public class Io06 {

8

    public static void main(String[] args) {

9

        BufferedReader br=null;

10

        BufferedWriter bw=null;

11

        try {

12

            //先创建FileReader对象

13

            FileReader fr=new FileReader("e:\\ff\\hsp.txt");

14

            br=new BufferedReader(fr);

15

            

16

            //创建FileWriter对象

17

            FileWriter fw=new FileWriter("e:\\hsp1.txt");

18

            bw=new BufferedWriter(fw);

19

            

20

            //循环读取

21

            String s="";

22

            while((s=br.readLine())!=null){

23

                //输出到磁盘

24

                bw.write(s+"\r\n");

25

            }

26

        } catch (Exception e) {

27

            e.printStackTrace();

28

        }finally{

29

            try {

30

                br.close();

31

                bw.close();

32

            } catch (Exception e) {

33

                e.printStackTrace();

34

            }

35

        }

36

    }

37

}

38


-----------------------------------------

常用io流--打印输出流PrintWriter

打印输出流PrintWriter可以使用print/println及writer方法。但不换行。需在文本内容中加入\r\n通配符才可以做到。

PrintWriter的使用方法与FileReader、FileWriter/BufferedReader、BufferedWriter基本相同

记事本实例[Io07.java]

/**
* 我的记事本(界面+功能)
*/
import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.awt.event.*;
public class Io07 extends JFrame implements ActionListener{
//定义组件
JTextArea jta=null;//文本框
//菜单条
JMenuBar jmb=null;
//定义第一个JMenu
JMenu jm1=null;
//定义JMenuItem
JMenuItem jmi1=null;
JMenuItem jmi2=null;
JMenuItem jmi3=null;

public static void main(String[] args) {
Io07 io=new Io07();
}
//构造函数
public Io07(){
//创建组件
jta=new JTextArea();
jmb=new JMenuBar();
jm1=new JMenu("文件(F)");
//设置助记符
jm1.setMnemonic(‘F‘);
jmi1=new JMenuItem("打开(O)");
//open打开注册监听
jmi1.addActionListener(this);
jmi1.setActionCommand("open");

jmi2=new JMenuItem("保存(S)");
//save保存注册监听
jmi2.addActionListener(this);
jmi2.setActionCommand("save");

jmi3=new JMenuItem("退出(X)");
//exit退出注册监听
jmi3.addActionListener(this);
jmi3.setActionCommand("exit");

//加入到菜单
this.setJMenuBar(jmb);
//把jm1放到jmb
jmb.add(jm1);
//把 jmi1放入jm1
jm1.add(jmi1);
jm1.add(jmi2);
jm1.add(jmi3);

//设置界面管理器(默认BorderLayout边界布局管理器)

//加入组件
this.add(jta);

//设置JFrame面板
this.setTitle("记事本界面与功能");
this.setSize(500, 400);
this.setLocationRelativeTo(null);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public void actionPerformed(ActionEvent e) {
//判断"打开"菜单被选中
if(e.getActionCommand().equals("open")){
/**
* 隆重推荐JFileChooser组件
*/
//创建一个文件选择组件
JFileChooser jfc=new JFileChooser();
//设置名字
jfc.setDialogTitle("请选择要打开的文件...");
//使用默认方式
jfc.showOpenDialog(null);
//显示
jfc.setVisible(true);

//得到用户选择的文件全(绝对)路径
String filename=jfc.getSelectedFile().getAbsolutePath();

FileReader fr=null;
BufferedReader br=null;
try {
fr=new FileReader(filename);
br=new BufferedReader(fr);
//从文件中读取信息并显示到jta(JTextArea)中
String s="";
String allCon="";
while((s=br.readLine())!=null){
allCon+=s+"\r\n";//"\r\n"显示文本时将文件中原有的格式显示到jta中
}
//放置到jta即可
jta.setText(allCon);
} catch (Exception e2) {
e2.printStackTrace();
}finally{
try {
br.close();
fr.close();
} catch (Exception e1) {
e1.printStackTrace();
}
}//判断"保存"菜单被选中
}else if(e.getActionCommand().equals("save")){
//创建保存对话框
JFileChooser jfc=new JFileChooser();
//设置名字
jfc.setDialogTitle("将文件保存到...");
//使用默认方式
jfc.showSaveDialog(null);
//显示
jfc.setVisible(true);

//得到用户希望把文件保存到何处,文件全路径
String file=jfc.getSelectedFile().getAbsolutePath();

//准备写入到指定文件
FileWriter fw=null;
BufferedWriter bw=null;
try {
fw=new FileWriter(file);
bw=new BufferedWriter(fw);
//将JtextArea中的内容输出到指定文件中
bw.write(this.jta.getText());
} catch (Exception e2) {
e2.printStackTrace();
}finally{
try {
bw.close();
fw.close();
} catch (Exception e1) {
e1.printStackTrace();
}
}

}else if(e.getActionCommand().equals("exit")){
System.exit(0);
}
}
}

x

1

/**

2

 * 我的记事本(界面+功能)

3

 */

4

import java.awt.*;

5

import javax.swing.*;

6

import java.io.*;

7

import java.awt.event.*;

8

public class Io07 extends JFrame implements ActionListener{

9

    //定义组件

10

    JTextArea jta=null;//文本框

11

    //菜单条

12

    JMenuBar jmb=null;

13

    //定义第一个JMenu

14

    JMenu jm1=null;

15

    //定义JMenuItem

16

    JMenuItem jmi1=null;

17

    JMenuItem jmi2=null;

18

    JMenuItem jmi3=null;

19

    

20

    public static void main(String[] args) {

21

        Io07 io=new Io07();

22

    }

23

    //构造函数

24

    public Io07(){

25

        //创建组件

26

        jta=new JTextArea();

27

        jmb=new JMenuBar();

28

        jm1=new JMenu("文件(F)");

29

        //设置助记符

30

        jm1.setMnemonic(‘F‘);

31

        jmi1=new JMenuItem("打开(O)");

32

        //open打开注册监听

33

        jmi1.addActionListener(this);

34

        jmi1.setActionCommand("open");

35

        

36

        jmi2=new JMenuItem("保存(S)");

37

        //save保存注册监听

38

        jmi2.addActionListener(this);

39

        jmi2.setActionCommand("save");

40

        

41

        jmi3=new JMenuItem("退出(X)");

42

        //exit退出注册监听

43

        jmi3.addActionListener(this);

44

        jmi3.setActionCommand("exit");

45

        

46

        //加入到菜单

47

        this.setJMenuBar(jmb);

48

        //把jm1放到jmb

49

        jmb.add(jm1);

50

        //把 jmi1放入jm1

51

        jm1.add(jmi1);

52

        jm1.add(jmi2);

53

        jm1.add(jmi3);

54

        

55

        //设置界面管理器(默认BorderLayout边界布局管理器)

56

        

57

        //加入组件

58

        this.add(jta);

59

        

60

        //设置JFrame面板

61

        this.setTitle("记事本界面与功能");

62

        this.setSize(500, 400);

63

        this.setLocationRelativeTo(null);

64

        this.setVisible(true);

65

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

66

    }

67

    

68

    public void actionPerformed(ActionEvent e) {

69

        //判断"打开"菜单被选中

70

        if(e.getActionCommand().equals("open")){

71

            /**

72

             * 隆重推荐JFileChooser组件

73

             */

74

            //创建一个文件选择组件

75

            JFileChooser jfc=new JFileChooser();

76

            //设置名字

77

            jfc.setDialogTitle("请选择要打开的文件...");

78

            //使用默认方式

79

            jfc.showOpenDialog(null);

80

            //显示

81

            jfc.setVisible(true);

82

            

83

            //得到用户选择的文件全(绝对)路径

84

            String filename=jfc.getSelectedFile().getAbsolutePath();

85

            

86

            FileReader fr=null;

87

            BufferedReader br=null;

88

            try {

89

                fr=new FileReader(filename);

90

                br=new BufferedReader(fr);

91

                //从文件中读取信息并显示到jta(JTextArea)中

92

                String s="";

93

                String allCon="";

94

                while((s=br.readLine())!=null){

95

                    allCon+=s+"\r\n";//"\r\n"显示文本时将文件中原有的格式显示到jta中

96

                }

97

                //放置到jta即可

98

                jta.setText(allCon);

99

            } catch (Exception e2) {

100

                e2.printStackTrace();

101

            }finally{

102

                try {

103

                    br.close();

104

                    fr.close();

105

                } catch (Exception e1) {

106

                    e1.printStackTrace();

107

                }

108

            }//判断"保存"菜单被选中

109

        }else if(e.getActionCommand().equals("save")){

110

            //创建保存对话框

111

            JFileChooser jfc=new JFileChooser();

112

            //设置名字

113

            jfc.setDialogTitle("将文件保存到...");

114

            //使用默认方式

115

            jfc.showSaveDialog(null);

116

            //显示

117

            jfc.setVisible(true);

118

            

119

            //得到用户希望把文件保存到何处,文件全路径

120

            String file=jfc.getSelectedFile().getAbsolutePath();

121

            

122

            //准备写入到指定文件

123

            FileWriter fw=null;

124

            BufferedWriter bw=null;

125

            try {

126

                fw=new FileWriter(file);

127

                bw=new BufferedWriter(fw);

128

                //将JtextArea中的内容输出到指定文件中

129

                bw.write(this.jta.getText());

130

            } catch (Exception e2) {

131

                e2.printStackTrace();

132

            }finally{

133

                try {

134

                    bw.close();

135

                    fw.close();

136

                } catch (Exception e1) {

137

                    e1.printStackTrace();

138

                }

139

            }

140

            

141

        }else if(e.getActionCommand().equals("exit")){

142

            System.exit(0);

143

        }

144

    }

145

}

146


JFileChooser:

setDialogTitle("请选择要打开的文件")

---------------------------------------------



















来自为知笔记(Wiz)

原文地址:https://www.cnblogs.com/xuxaut-558/p/10045779.html

时间: 2024-10-16 08:15:34

JAVA入门到精通-第46讲-IO编程.记事本开发的相关文章

JAVA入门到精通-第45讲-IO编程

image1=ImageIO.read(new File("bomb_1.gif")); 图片拷贝: 输入流和输出流同时要用的问题: 图片读入到内存: 写入,输出到某个文件: 二进制文件,字节流完成: FileInputStream fis=new FileInputStream("xxxx.jpg"); 输出到指定文件:FileOutputStream  fos=null; 关闭打开的文件流: -----------------------------------

JAVA入门到精通-第44讲-IO编程

//FileOutputStream的使用 准备把它输出到d:\\ss.txt 文件, 文件不存在直接创建: 如果存在,可能会被覆盖: //字节流 FileOutputStream fos=null; //输出-Output-离开内存-Output/Write //如何把string转换成bytes数组: s.getBytes() //关闭文件流 //两个字符串的换行 world\r\n \r\n就是回车换行的意思 ----------------------------------------

JAVA入门到精通-第32讲-swing编程实战

 JBorderLayout,左边是JList,拆分窗格: 图片是放在JLabel上的,图片的地址写好就行:  在相关项目下面建立一个文件夹Folder,放置图片:或者复制粘贴:   拆分:水平拆分?垂直拆分?    拆分之后把jList和jl1这两个组件放进去: 可以伸缩:  在窗口左上角出现自己的图标? Border布局: 多行文本框带滚动条,聊天窗口可滚动:   加入QQ左上角图标:      转成图片,getImage; Border布局很有用, CENTER会被自动挤满:  QQ号码.

JAVA入门到精通-第94讲-山寨QQ项目8-好友在线提示

遇到的问题: 现在每登录一个人,后面的人是能看到前面的登录的人的: 但是,前面的人看不到后面的人登录: //后面每登录一个人,有责任去通知前面登录的人他已经上线了: 通知了完以后,需要更改好友在线的情况: //不让同一个账号反复登录 //如果 好友不在线,则不能聊天 ================================ [ManageQqChat.java] /** * 这是一个管理用户聊天界面的类 */ package com.qq.client.tools; import jav

JAVA入门到精通-第31讲-常见组件

面板组件-Jpanel  一个JFrame,多个JPanel: JPanel默认是流布局:FlowLayout:  通过JPanel达到复杂布局的目的:  可以认为是网格布局,有3个JPanel:2个Label:2个按钮: 一个密码框和一个文本输入框:   最终展现出来的还是靠JFrame展现的  网格布局好点,3个JPanel,用流布局,控件往里加: ButtonGroup按钮组:一组里面只能选择一个:    对单选框管理,就是把它加入到ButtonGroup里面: 单选框也是一个个放进JPa

JAVA入门到精通-第92讲-山寨QQ项目6-多对多的聊天

QQ聊天项目演示-多对多的聊天 流同时并发的异常: 服务器中转 2/3号只有一个连接: 接收信息:while循环不停地读取: 当1号点开两个窗口时,2/3会共同去争取这个socket: 会出现流同时并发异常: Socket处理成static不太合理: 启动一个窗口就会占据Socket不放: ------------- -实现真正的多人聊天,互相不出现错误 -每一个登录的账号独享一份socket -去掉static 当一个链接达成的时候, 启动线程, 和服务器保持通讯的状态: 做一个类来管理客户端

JAVA入门到精通-第0讲

p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; font-size: 10.5pt; font-family: "Calibri", "sans-serif" } .MsoChpDefault { } div.Section1 { } java平台 1.J2SE java开发平台标准版 2.J2EE java开发平台企

JAVA入门到精通-第33讲-绘图技术.坦克大战1

    用的是Access数据库,安全性不够好,性能也不够强大:   躲在这里,坦克很少过来,做了一个随机数: 把得分的记录保存在数据库里面: SQLServer2005中型数据库:    (x,y)坐标:     800x600:     表示计算机屏幕上的每一行由800个点组成,共有600行:   共有480000个像素:   java绘图技术:   绘图一般在JPane上画: 覆盖JPanel的paintat方法 Graphics是一个图形画笔类,绘图的重要类,可以理解为一只画笔 supe

JAVA入门到精通-第72讲-学生管理系统4-model 2模式(1)

删除.查询.添加.修改: -修改: 每个字段都可能修改: //给?赋值 //在prepareStatement语句后面赋值才好用 //修改完了,更新数据 目前为止,已经完成了增删改查-Model1模式 最大特点: 界面和业务逻辑操作是放在一起的: 优点:简单,开发方便: 缺点:代码复用性不高: 中大型项目可读性差,可维护性不高: 前台后端混杂在一起的: 比如:"数据库密码换了, 所有涉及到数据库的地方都需要发生变化" =================================