




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课时授课计划课次序号:15 一、课题: 输入/输出二、课型:课堂讲授三、目的要求: 学生通过该次课的学习,了解输入/输出类的继承层次,掌握字节流和字符流的输入输出,掌握文件的输入输出操作。四、重点、难点: 重点:字节流和字符流的输入输出,文件的输入输出操作 难点:文件的输入输出操作 五、教学方法及手段: 以讲授为主,例题的编辑、编译、运行结合现场演示进行。六、参考资料:JAVA程序设计实用教程/javase/reference/api.jsp七、作业:1.编写程序完成:从键盘输入三个学生信息:学号,姓名,性别,年龄,将这些信息写入文本文件“student.txt”,并将三名学生信息从文件中读出并输出。2. 定义电话帐号信息类,包括属性:机主姓名(字符串型)、电话号码(整形)、话费余额(浮点型),定义构造函数对对象进行初始化;编写主类创建一个电话帐号信息类的对象,属性值分别是:张三,150*9999,45.8,并将该对象写入文件“test1.dat”中,然后从文件中再将该对象读出,并将该对象的属性值输出。八、授课记录:授课日期班次九、授课效果分析:十、教学进程(教学内容、教学环节及时间分配等)1、复习2、导入课题3、教学内容输入/输出1输入/输出、流和相关类(1)流:是一个想象中的无限长的数据序列,可以对其进行各种各样的访问,从其中读数据,向其中写数据。(2)输入流和输出流输入流:数据从源(外存、外设)流向程序(内存)。输出流:数据从程序(内存)流向目的地(外存、外设)。2.java.io包中的输入/输出流OutputStream FileOutputStream ObjectOutputStreamInputStream FileInputStream ObjectInputStreamWriter BufferedWriter OutputStream Writer FileWriterReader BufferedReader InputStreamReader FileReaderObject InputStream OutputStream Reader Writer File RandomAccessFile1) InputStream OutputStream抽象类,声明了基于字节的输入/输出基本方法。2) FileInputStream FileOutputStream文件输入输出流。3)ObjectInputStream ObjectOutputStream 对象输入输出流。 4)Reader Writer 抽象类,声明了基于字符的输入/输出基本方法。5)BufferedReader BufferedWriter带缓冲区的读/写字符流 6)InputStreamReader OutputStreamWriter 字符流与字节流的转换 7)FileReader FileWriter 用来读、写字符文件的便捷类 8)File表示文件路径名和文件名 9)RandomAccessFile 随机文件3. 基于字节的输入输出 读写单位为一个字节(1) 标准输入/输出InputStream inPrintStream out (2)InputStream中方法: int read() /读下一个字节,返回0255之间的一个整数。不能读入返回-1. int read(byte b)/读取最多b.length个字节,写入字节数组。返回读入缓冲区的总字节数;如果因为已经到达流末尾而不再有数据可用,则返回 -1。 int read(byte b,int off,int len)/ 读取最多len个字节,写入字节数组,off为起始偏移量。读入缓冲区的总字节数;如果因为已经到达流末尾而不再有数据可用,则返回 -1。int available() throws IOException返回此输入流可读取字节数。void close()关闭输入流流式输入输的特点就是读写的顺序性,每个流都有一个位置指针。对位置指针的操作long skip(longn) throws IOException跳过和丢弃此输入流中数据的 n 个字节。 OutputStream中方法: write(int b)/写指定字节到输出流, write(byte b)/从数组b写b.length个字节到输出流 write(byte b,int off,int len)/从数组b起始偏移量off处写len个字节到输出流例题:io1.javaimport java.io.*;public class io1 public static void main(String args) int ch; System.out.println(enter a char:); try while (ch=System.in.read()!=-1) System.out.println(The char is +(char)ch); System.in.skip(2);/跳过回车键 catch(IOException e) System.out.println(The input is err); io2.javaimport java.io.*;public class io2 public static void main(String args) throws IOException byte b=new byte255; for(int i=0;i255;i+) bi=(int) ; System.out.println(enter chars:); System.in.read(b,0,255); String s=new String(b); System.out.println(The chars is +s); 4.基于字符的输入/输出 1) Unicode每个字符用2个字节构成,读写单位为字符 2)抽象类:Reader Writerint read(charcbuf) throws IOException将字符读入数组。取的字符数,如果已到达流的末尾,则返回 -1。 void write(Stringstr) throws IOException向输出流写入字符串。 3) BufferedReader BufferedWriter:带缓冲区的读/写字符流BufferedReader从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。BufferedWriter将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。String readLine() throws IOException读取一个文本行。通过下列字符之一即可认为某行已终止:换行 (n光标往下一行)、回车 (r, 光标重新回到本行开头) 或回车后直接跟着换行。返回包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null 4)字符流与字节流的转换 InputStreamReader:是字节流通向字符流的桥梁:它使用指定的字符集 (charset) 读取字节并将其解码为字符。OutputStreamWriter: 是字符流通向字节流的桥梁:可使用指定的字符集 (charset)将要写入流中的字符编码成字节。 例:linein.java import java.io.*;public class linein public static void main(String args) throws java.io.IOException String s; InputStreamReader ir=new InputStreamReader(System.in); BufferedReader ln=new BufferedReader(ir); while(s=ln.readLine()!=null) System.out.println(Read +s); 5.文件的输入输出文件分类:顺序文件,随机访问文件(1) 顺序文件的输入输出1) FileFile类对象实例表示文件路径名和文件名例如:File f=new File(“C:/”);/将c盘的根目录生成一个File对象。2) 文件输入输出流基于字节流FileInputStreamFileOutputStream字节流例c915.java读import java.io.*;class fapp1public static void main(String args) throws java.io.IOException int b; FileInputStream fin=new FileInputStream(c915.java); while(b=fin.read()!=-1) System.out.print(char)b); 例c918.java写import java.io.*;class fa4 public static void main(String args) byte buffer=new byte80; try System.out.println(Enter:); int bytes=System.in.read(buffer); FileOutputStream fout=new FileOutputStream(line.txt); fout.write(buffer,0,bytes); catch(Exception e) 3) 文件输入字符流例c916.javaimport java.io.*;class fapp2public static void main(String args) throws java.io.IOException String s; BufferedReader in; FileInputStream fin=new FileInputStream(c915.java); in=new BufferedReader(new InputStreamReader(fin); while(s=in.readLine()!=null) System.out.println(read:+s); 4) 用FileReader FileWriter实现文本文件读写例c919.javaimport java.io.*;class fapp3public static void main(String args) throws java.io.IOException String s; BufferedReader in; FileReader fin=new FileReader(c915.java); in=new BufferedReader(fin); while(s=in.readLine()!=null) System.out.println(Fileread:+s); 例c920.javaimport java.io.*;class fa5 public static void main(String args) String s; try System.out.println(Enter:); InputStreamReader ir=new InputStreamReader(System.in); BufferedReader ln=new BufferedReader(ir); FileWriter f=new FileWriter(t1.txt); while(s=ln.readLine()!=null) f.write(s+rn); ln.close(); f.close(); catch(Exception e) (2) 随机访问文件的输入输出可以从文件的任意位置开始读写有一个文件指针随着读写操作在移动,进行文件读写时就是根据文件指针找到文件的某个位置开始读写。RandomAccessFile类 RandomAccessFile implements DataOutput, DataInputRandomAccessFile(文件名,模式) 文件名,模式都是字符串,模式“r”代表只读文件,“rw”代表可读写文件。常用方法:public final char readChar() throws IOException从此文件读取一个 Unicode 字符。此方法从该文件的当前文件指针开始读取两个字节。 public final void writeChar(intv) throws IOException按双字节值将 char 写入该文件,先写高字节。写入从文件指针的当前位置开始。 public final int readInt() throws IOException从此文件读取一个有符号的 32 位整数。此方法从该文件的当前文件指针开始读取 4 个字节。 public final void writeInt(intv) throws IOException按四个字节将 int 写入该文件,先写高字节。写入从文件指针的当前位置开始。public final double readDouble() throws IOException从此文件读取一个 double。此方法从当前文件指针开始读取一个 long 值,类似于使用 readLong 方法,然后使用 Double 类中的 longBitsToDouble 方法将该 long 转换为一个 double。 public final void writeDouble(doublev) throws IOException使用 Double 类中的 doubleToLongBits 方法将双精度参数转换为一个 long,然后按八字节数量将该 long 值写入该文件,先定高字节。void seek(long pos)设置相对于文件头的文件指针偏移量,即指针移动到文件开头pos个字节处。 long length() 返回文件的长度 例:c922.java import java.io.*;class randrw public static void main(String args) RandomAccessFile f; randrw r1=new randrw(); Employee e1=new Employee3; e10=new Employee(张一,21,3100); e11=new Employee(张二,22,3200); e12=new Employee(张三,23,3300); try f=new RandomAccessFile(test.dat,rw); r1.writedata(e1,f); r1.readdata(3,e1,f); catch(Exception e) void writedata(Employee e1,RandomAccessFile fout) throws IOException for(int i=0;ie1.length;i+) for(int j=0;_length;j+) char ch=0; if(.length() ch=.charAt(j); fout.writeChar(ch); fout.writeInt(e1i.age); fout.writeDouble(e1i.salary); void readdata(int n,Employee e1,RandomAccessFile f) throws IOException int size=E_length; StringBuffer b=new StringBuffer(size); char ch=new charsize; int i; boolean more=true; f.seek(n-1)*Employee.rec_length); i=0; while(more & isize) char ch1=f.readChar(); i+; if(ch1=0)more=false; else b.append(ch1); f.skipBytes(2*(size-i); System.out.print(b.toString()+ ); System.out.print(f.readInt()+ ); System.out.println(f.readDouble(); class Employee String name; int age; double salary; static final int name_length=4;/姓名长度为4个字符 static final int rec_length=name_length*2+4+8;/记录长度,字节数; Employee(String n,int a,double s) name=n; age=a; salary=s; public String toString() return name+ +age+ +salary+rn; 6.对象输入输出流 ObjectInputStream ObjectOutputStream Java中的对象也可以通过流的方式进行处理,这称为对象的序列化(Serialization)。可以把一个对象写入文件,也可以从文件中读取一个对象。对象序列化的步骤:1) 定义可以通过流处理的类:一个类只有实现了Serializable接口,其对象才能通过流进行输入输出。Serializable接口不需要实现任何方法,只要在类的后面加上implements Serializable即可。2) 创建文件输入输出流FileOutputStream f=new FileOutputStream(my.dat);FileInputStream fin=new FileInputStream(my.dat);3) 创建对象处理流ObjectOutputStream b=new ObjectOutputStream(f);ObjectIn
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Module 9 Unit 1 He left school and began work at the age of twelve 教学设计 外研版七年级英语下册
- 2025年中国钢铁耐火材料行业市场分析及投资价值评估前景预测报告
- 2025年中国干湿两用电动剃须刀行业市场分析及投资价值评估前景预测报告
- 2025年中国橄榄叶液体和粉末提取物行业市场分析及投资价值评估前景预测报告
- 2025年中国改性异氰酸酯行业市场分析及投资价值评估前景预测报告
- 2025年地热能源区域供暖技术应用案例分析报告
- 2025年中国氟碳树脂涂料行业市场分析及投资价值评估前景预测报告
- 03 第6讲 力的合成与分解 【答案】听课手册
- 2025年中国风力涡轮齿轮油行业市场分析及投资价值评估前景预测报告
- 第2节 生物对环境的适应和影响教学设计-苏科版生物七年级上册
- 2025年自考艺术教育题库及答案
- 2025年四川省党政领导干部政治理论水平考试(理论测试)练习题及答案
- 高一物理第一次月考卷(全解全析)(天津专用)
- 2025年专利审查对专利密集型行业分析方案
- 2025成考专升本政治试题及答案解析
- 肺间质纤维化教学课件
- DBS教材03精益转换训练
- 护理实习生院感培训课件
- 五粮液企业招聘面试试题集锦:新热点问题及答案
- 食品检测检验技术专业介绍
- 2025年26道医院财务科岗位面试真题及答案
评论
0/150
提交评论