线程、IO总结

线程、IO总结

 

1、创建线程类的对象,并通过调用start方法来启动线程

Thread t = new Thread(l);

t.start();

2、创建线程监听器ThreadListener,继承Thread或者implements runnable

这里先讨论implements runnable:

在ThreadListener类下面重写run方法

如果直接继承Thread,那么可以直接创建当前类的对象,并且在该类下面写run方法

IO文件读写

IO的用途非常广,可以把以前做的程序变得非常地实用,因为程序能够记录下内容,并可以在以后调用。

关于IO的五个方法(函数)

1、根据字符读文件(读出来的文件都是int型的字符)

新建一个类的对象,括号内需要传参,参数可以是file对象,也可以是具体的文件路径。

如果要File对象,那么需要通过以下方式来把文件路径转换成File对象。

File f = new File(FileRoot);// 把路径转换成File类

InputStream in = new FileInputStream(f);

这里会报错,因为需要把以上语句写入try-catch里面。

因为是读字节,所以调用read方法,把读到的字符保存在t里面。int t = in.read();

while (t != -1)// 读到最后一个字符的时候会赋值-1,即-1是文件的末尾

{

System.out.println("取到的字节是:" + t);

t = in.read();

}

如此循环往复,直至文件所有内容都被读完。接下来就要关闭掉这个流。in.close();// 打开一个流之后必须要关闭掉这个流

Catch语句如下,括号内与平时写的稍有不同。

 catch (Exception e) { // 注意这里是Exception

e.printStackTrace();

}

2、根据字符串读文件(以字符串的形式,可以获取完整的,可以被人读取并能理解的信息)

需要开一个byte数组,用in.available()可以直接获取文本的大小

byte[] a = new byte[in.available()];// 根据文件的大小,来确定数组的大小

for (int i = 0; i < in.available(); i++)// 循环in.avaliable()次

{

a[i] = (bytein.read();// 本来是int类型的,转成byte类型

}

把读到的内容转成byte型并赋值给a数组。

也可以这样简写:

byte[] content = new byte[in.available()];// 根据输入流中的字节大小来创建一个byte数组,来储存

in.read(content);// 直接读到content数组里面

s = new String(content);// 数组转字符串

 

 

3、把字符串写入文件

流程:字符串转字节-写字节到文件中去

创建FileOutputStream类的对象

OutputStream out = new FileOutputStream(FileRoot);// 填路径名也可以

调用字符串的getBytes方法:

byte[] content = msg.getBytes();// 字符串转字节数组

for (int i = 0; i < content.lengthi++) {

out.write(content[i]);// 把byte写入文件中

}

out.flush();

out.close();

 

4、复制文件

其实很简单,先把文件读成字符串,再把字符串写成一个新的文件就可以了。

 

5、加密/解密文件(使得文件内容变成乱码,通过解密可以把乱码变回到文字)

加密流程:读成字符串-转char数组-对数组做手脚(加加减减)-数组转成字符串-写入文件

解密流程:和加密过程类似,只不过在对数组做手脚的时候要反过来。

 

IO应用实例:

在画图板上把杰作保存下来。

注意点:

// 添加

private ArrayList<Lines> al;

private boolean b = false;

 

public void setAl(ArrayList<Lines> al) {

this.al = al;

b = true;//表示已经按了按钮,paint方法里面的if语句生效

}

保存所有轨迹的坐标,以用于重绘

public void actionPerformed(ActionEvent e) {

if (e.getActionCommand() == "save") {

df.setAl(al);// 把数组队列传到DrawFrame类里面

df.paint(g2d);// 传画笔,画笔画在BufferedImage上面

try {

ImageIO.write(bi"PNG"new FileOutputStream("frame.png"));

catch (IOException e1) {

e1.printStackTrace();

System.out.println("出错了!!");

}

}

}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值