ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:151.19KB ,
资源ID:23694546      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23694546.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(JAVA之旅三十.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

JAVA之旅三十.docx

1、JAVA之旅三十JAVA之旅(三十)一.打印流PrintWriter打印流有PrintWriter和PrintStream,他的特点可以直接操作输入流还有文件该流提供了打印方法,可以将各种数据类型原样打印 file对象 File字符串路径 String字节打印流字符打印流我们演示一遍大家就对此有所了解了package com.lgl.hellojava;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;publi

2、c class HelloJJAVA public static void main(String args) try BufferedReader bufr = new BufferedReader(new InputStreamReader( System.in); PrintWriter oWriter = new PrintWriter(System.out, true); String line = null; while (line = bufr.readLine() != null) if (line.equals(over) break; oWriter.write(line)

3、; oWriter.close(); bufr.close(); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace(); 要想存到文件里,也是可以直接把文件给放进去的二.合并流我们来看看什么是合并流,在API文档上说,他可以串联流package com.lgl.hellojava;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import jav

4、a.io.IOException;import java.io.SequenceInputStream;import java.util.Enumeration;import java.util.Vector;public class HelloJJAVA public static void main(String args) try Vector v = new Vector(); v.add(new FileInputStream(1.txt); v.add(new FileInputStream(2.txt); Enumeration elements = v.elements();

5、SequenceInputStream sis = new SequenceInputStream(elements); FileOutputStream fos = new FileOutputStream(3.txt); byte buf = new byte1024; int len = 0; while (len = sis.read(buf) != -1) fos.write(buf, 0, len); fos.close(); sis.close(); catch (FileNotFoundException e) / TODO Auto-generated catch block

6、 e.printStackTrace(); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace(); 把1.txt和2.txt乃至add更多的内容合并到3.txt文件中,这就是流的合并三.切割文件合并文件可以,那肯定可以切割了,我们来看下具体是怎么去制作的/ 切割文件 public static void splitFile() try FileInputStream fis = new FileInputStream(1.jpg); FileOutputStream fos = null; byt

7、e buf = new byte1024 * 1024; int len = 0; int count = 1; while (len = fis.read(buf) != -1) fos = new FileOutputStream(count+) + .patch); fos.write(buf, 0, len); fos.close(); fis.close(); catch (FileNotFoundException e) / TODO Auto-generated catch block e.printStackTrace(); catch (IOException e) / TO

8、DO Auto-generated catch block e.printStackTrace(); 当运行结束之后,我们可以看到已经成功切割了切割完我们可以合并了/ 合并文件 public static void merge() ArrayList al = new ArrayList(); for (int i = 1; i = 2; i+) try al.add(new FileInputStream(i + .patch); catch (FileNotFoundException e) / TODO Auto-generated catch block e.printStackTra

9、ce(); Iterator iterator = al.iterator(); Enumeration en = new Enumeration() Override public boolean hasMoreElements() / TODO Auto-generated method stub return iterator.hasNext(); Override public FileInputStream nextElement() / TODO Auto-generated method stub return iterator.next(); ; try SequenceInp

10、utStream seq = new SequenceInputStream(en); FileOutputStream fos = new FileOutputStream(2.jpg); byte buf = new byte1024; int len = 0; while (len = seq.read(buf) != -1) fos.write(buf, 0, len); fos.close(); seq.close(); catch (FileNotFoundException e) / TODO Auto-generated catch block e.printStackTrac

11、e(); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace(); 这样我们就把图片拷贝出来了,可以看到这段代码是非常帮的,我们一定会用到的,希望能用的上四.对象的序列化Serializable其实就是可以直接操作对象的流,他会实现一个Serializable()接口,我们用代码来看下他是怎么用的,我们直接写读取对象的类了package com.lgl.hellojava;import java.io.FileInputStream;import java.io.FileOutputStream;i

12、mport java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;public class HelloJJAVA public static void main(String args) / writeObj(); readObj(); private static void readObj() try ObjectInputStream ois = new ObjectInputStream(new FileInput

13、Stream( obj.txt); Person p = (Person) ois.readObject(); System.out.println(p); ois.close(); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace(); catch (ClassNotFoundException e) / TODO Auto-generated catch block e.printStackTrace(); private static void writeObj() try ObjectOu

14、tputStream oos = new ObjectOutputStream( new FileOutputStream(obj.txt); oos.writeObject(new Person(zhangsan, 20); oos.close(); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace(); class Person implements Serializable String name; int age; public Person(String name, int age) t

15、his.name = name; this.age = age; OK,自己去验证一下五.管道流输入输出可以直接进行连接,通常结合线程使用package com.lgl.hellojava;import java.io.IOException;import java.io.PipedInputStream;import java.io.PipedOutputStream;public class HelloJJAVA public static void main(String args) PipedInputStream pi = new PipedInputStream(); PipedO

16、utputStream po = new PipedOutputStream(); try pi.connect(po); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace(); Read read = new Read(pi); Write write = new Write(po); new Thread(read).start(); new Thread(write).start(); class Read implements Runnable private PipedInputStre

17、am in; public Read(PipedInputStream in) this.in = in; Override public void run() try byte buf = new byte1024; int len = in.read(buf); String s = new String(buf, 0, len); System.out.println(s); in.close(); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace(); class Write implem

18、ents Runnable private PipedOutputStream out; public Write(PipedOutputStream out) this.out = out; Override public void run() try out.write(yes.getBytes(); out.close(); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace(); 现在就可以联通了六.RandomAccessFile这是一个很特别的家伙,他继承的是Object该类不是IO体系

19、中的子类但是他是IO包中的成员,他同时具备读写功能内部封装了一个数组,而且通过指针对数组中的元素进行操作可以通过getFilePointer或者指针位置同时可以通过seek改变指针的位置其实完成读写的原理就是内部封装了字节输入,输出流,通过构造函数可以看出该类具备操作文件的能力,而且操作文件还有模式package com.lgl.hellojava;import java.io.FileNotFoundException;import java.io.IOException;import java.io.RandomAccessFile;public class HelloJJAVA publ

20、ic static void main(String args) writeFile(); public static void writeFile() try RandomAccessFile raf = new RandomAccessFile(1.txt, rw); raf.write(zhangssan.getBytes(); raf.writeInt(99); raf.close(); catch (FileNotFoundException e) / TODO Auto-generated catch block e.printStackTrace(); catch (IOExce

21、ption e) / TODO Auto-generated catch block e.printStackTrace(); 这只是一个写的过程,我们的特性还没有体现出来,我们来看下他是怎么读的private static void ReadFile() try RandomAccessFile raf = new RandomAccessFile(1.txt, r); / 调整对象指针 raf.seek(8 * 0); byte buf = new byte1024; raf.read(buf); String s = new String(buf); System.out.println

22、(s); raf.close(); catch (FileNotFoundException e) / TODO Auto-generated catch block e.printStackTrace(); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace(); 如果操作的文件不存在,就会自动创建,如果存在,直接覆盖七.IO其他类IO其他包里,还有一些其他的使用操作基本数据类型字节数组字符数组1.基本数据类型我们先来看下基本数据类型的,我直接读写都写出来 public static void r

23、eadData() try DataInputStream dis = new DataInputStream(new FileInputStream( data.txt); int num = dis.readInt(); boolean d = dis.readBoolean(); System.out.println(num + + d + ); dis.close(); catch (FileNotFoundException e) / TODO Auto-generated catch block e.printStackTce(); catch (IOException e) /

24、TODO Auto-generated catch block e.printStackTrace(); / 基本数据类型 public static void writeDatea() try DataOutputStream dos = new DataOutputStream(new FileOutputStream( data.txt); dos.writeInt(55); dos.writeBoolean(true); dos.close(); catch (FileNotFoundException e) / TODO Auto-generated catch block e.pr

25、intStackTrace(); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace(); 读取基本数据类型二.字节数组这个偶尔用下,但是我们还是要去学习一下的ByteArrayInputStream: 在构造的时候,需要接收数据源,而且数据源是一个字节数组ByteArrayOutputStream:在构造的时候,不用定义数据的目的,因为该对象中已经内部封装了可变程度的字节数组因为这两个流的对象都操作的数组,并且没有使用系统资源,所以,不用进行close关闭!package com.lgl.hell

26、ojava;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;public class HelloJJAVA public static void main(String args) / 数据源 ByteArrayInputStream bis = new ByteArrayInputStream(123.getBytes(); / 数据目的 ByteArrayOutputStream bos = new ByteArrayOutputStream(); int ch = 0; while (ch

27、= bis.read() != -1) bos.write(ch); System.out.println(bos.size(); System.out.println(bos.toString(); 是不是比较简单,字符流我就不说了,和字节流是类似的,但是他会衍生出一个新的内容就是字符编码八.字符编码这些乱七八糟的编码说真的,东西还是挺多的,但是我并不想讲那么多,因为本身我也不是很清楚,其次这玩意大致的知道一点就可以了(个人觉得),什么ASCLL,GBK,UTF-8之类的 String s = hello java; byte b1 = s.getBytes(); System.out.pr

28、intln(Arrays.toString(b1);他得到的是什么?现在我换一个编码byte b1 = s.getBytes(GBK);11我设置成GBK,他的值是一样的,说明默认的是GBK九.练习写完这个练习,我们的I/O流就GG了,感慨颇多,写I/O写了很多篇,但是仍然晕乎乎的,应该继续加深印象的,我们来看下需求有五个学生,每个学生有三门课程,从键盘输入以下数据(包括姓名,三门课成绩),输入的格式,如zhangsan,30,60,96计算出总成绩,并把学生的信息和计算出的总分数高低顺序存入文件student.txt中去;好了,开始撸代码了package com.lgl.hellojava;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;import java.util.Set;import java.util.TreeSet;public class HelloJJAVA public static void main(Stri

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1