• 367.00 KB
  • 2022-04-29 14:29:47 发布

最新JAVA-IO流学生课件PPT课件.ppt

  • 47页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'JAVA-IO流学生课件 本节主要内容流的概述流的分类InputStream/OutputStreamReader/Writer流的几种典型流向RandomAccessFile的用法 I/O流概述为进行数据的输入/输出操作,Java中把不同的输入/输出源(键盘、文件、网络连接等)抽象表述为“流”(stream)。Stream是从起源(source)到接收(sink)的有序数据java.io包中定义了多个流类型(类或抽象类)来实现输入/输出功能。按照流的方向分两种基本的流:输入流和输出流输入流:只能从中读取字节数据,而不能向其写出数据输出流:只能向其写入字节数据,而不能从中读取数据按照流所处理的数据类型划分,可以分为:字节流:用于处理字节数据(8个bit)包括InputStream/OutputStream。字符流:用于处理Unicode字符数据(16个bit)。包括Writer/Reader 常见InputStream类低级InputStream类(节点流):InputStream:所有字节流的超类,定义了很多用于处理输入流的方法,是个抽象类ByteArrayInputStream:为读取字节数组设计的流,用于从文件中读取二进制数据PipedInputStream:管道流,FileInputStream:用于读取文件中的信息FilterInputStream:继承自InputStream,能将一个流连接到另一个流的末端,将两个流连接起来高级InputStream类(处理流):DataInputStream:可以从低级流中读取简单数据和String类型的数据.这样,可以将底层的读取细节隐藏起来,而直接处理简单类型和String类型的数据BufferedInputStream:提供缓冲能力的字节输入流 InputStream类层次InputStreamFileInputStreamStringBufferInputStreamByteArrayInputStream节点流处理流ObjectInputStreamPipedInputStreamSequenceInputStreamFilterInputStreamDataInputStreamPushbackInputStreamBufferedInputStreamLineNumberInputStream InputStream例子(示例10-1)byte[]buff=newbyte[1024];intn;FileInputStreamfis=null;try{fis=newFileInputStream(“C:\a.txt”);while((n=fis.read(buff))!=-1){System.out.write(buff,0,n);}}catch(FileNotFoundExceptione){System.out.println("没有找到文件");System.exit(1);}…… OutputStream基本方法三个基本的write方法:voidwrite(intc)voidwrite(byte[]buffer)voidwrite(byte[]buffer,intoffset,intlength)其它方法voidclose()voidflush():将缓冲中的字节发送到流中,同时清空缓冲区 OutputStream类低级OutputStream,用来向设备中写入字节流OutputStream:所有字节输出流的基类ByteArrayOutputStream:按字节数组方式向设备中写入字节流的类PipedOutputStream:管道输出流高级OutputStreamDataOutputStream:可以向低级流中写入简单数据和String类型的数据.这样,可以将底层的写入细节隐藏起来,而直接处理简单类型和String类型的数据BufferedOutputStream:提供缓冲能力的字节输出流 OutputStream类层次OutputStreamFileOutputStreamFilterInputStreamByteArrayOutputStreamPipedOutputStream节点流处理流ObjectOutputStreamDataOutputStreamPrintStreamBufferedOutputStream OutputStream例子(示例10-2)FileOutputStreamout;//声明一个PrintStream流PrintStreamp;try{out=newFileOutputStream("myfile.txt");p=newPrintStream(out);p.println("面朝大海,春暖花开");p.close();}catch(Exceptione){System.err.println("Errorwritingtofile");} 通过Stream拷贝文本文件例子(示例10-3)通过FileInputStream和FileOutputStream,实现从一个文本文件拷贝内容到另一个文件的例子通过FileInputStream从源文本文件中读出数据,然后通过FileOutputStream写入到另外一个文本文件中。使用高级流(BufferedInputStream/BufferedOutputStream)对低级流进行包装 Reader/WriterReader/Writer处理的是字符类型的数据。它处理流的方式是以字符为单位进行的。Reader/Writer和InputStream/OutputStream一样,也分为节点流(低级流)和处理流(高级流)。Reader和InputStream一样,用于从流中读取数据。它和InputStream的区别在于,InputStream以字节为单位操作流,而Reader以字符为单位操作流。 Reader常用方法读取方法:intread():用于从流中读出一个字符,并将它返回。intread(char[]buffer):将从流中读出的字符放到字符数组buffer中,返回读出的字符数。intread(char[]buffer,intoffset,intlength):将读出的字符放到字符数组的指定offset开始的空间,每次最多读出length个字符。其他方法:voidclose():关闭Reader流。booleanready():判断流是否已经准备好被读取。skip(longn):跳过指定的n个字符。booleanmarkSupported():和InputStream中的markSupported方法类似。voidmark(intreadAheadLimit):和InputStream中的mark方法类似。voidreset():和InputStream中的reset方法类似。 Reader相关类低级Reader类:CharArrayReader:StringReaderPipedReaderFileReader高级Reader类BufferedReaderInputStreamReaderLineNumberReader Reader类层次ReaderBufferedReaderStringReaderCharArrayReaderInputStreamReaderPipedReaderFilterReaderFileReaderPushbackReaderLineNumberReader节点流处理流 Reader例子(示例10-4)FileReaderfr=newFileReader("C:/nos/tmp/mydata.txt");BufferedReaderbr=newBufferedReader(fr);Stringrecord=newString();while((record=br.readLine())!=null){recCount++;System.out.println("Line"+recCount+":"+record);} InputStreamReaderInputStreamReader能将字节流转换为一个Reader,即能将字节流转换为字符流publicstaticvoidreadRile(){try{InputStreamReaderisr=newInputStreamReader(newFileInputStream("c:\a.txt"));BufferedReaderbufferedReader=newBufferedReader(isr)Stringstr="";while((str=bufferedReader.readLine())!=null){System.out.println(str);}}catch(FileNotFoundExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}} CharArrayReader从内存的字符串数组中读取字符,它的数据源是一个字符数组,它把字符数组类型转换为Reader类型:publicstaticvoidreadRile(){char[]arrays={"a","你","好","啊","t"};CharArrayReaderreader=newCharArrayReader(arrays);inti=0;try{while((i=reader.read())!=-1){System.out.print((char)i);}}catch(IOExceptione){//TODO自动生成catch块e.printStackTrace();}reader.close();} StringReader把String类型转换为Reader类型publicstaticvoidreadRile(){Stringstr=“经费来的快速家法律监督是分机离开收到n将发了开赛发了看见的说n发觉脸上开发介绍两分巨大胜利n";StringReaderreader=newStringReader(str);inti=0;try{while((i=reader.read())!=-1){System.out.print((char)i);}}catch(IOExceptione){e.printStackTrace();}reader.close();} Writer常用方法写入方法:voidwrite(intc):将参数c的低16位组成字符写入到流中。voidwrite(char[]buffer):将字符数组buffer中的字符写入到流中。voidwrite(char[]buffer,intoffset,intlength):将字符数组buffer中从offset开始的length个字符写入到流中。voidwrite(Stringstring):将string字符串写入到流中。voidwrite(Stringstring,intoffset,intlength):将字符string中从offset开始的length个字符写入到流中。其他方法:voidclose():和OutputStream的close方法类似。voidflush():和OutputStream的flush方法类似。 Writer相关类低级Writer类:CharArrayWriterStringWriterPipedWriterFileWriter高级Writer类:BufferedWriterOutputStreamWriterPrintWriter:将流转换为文本 Writer类层次WriterStringWriterCharArrayWriterPipedWriterOutputStreamWriterFileWriter节点流处理流FilterWriterBufferedWriterPrintWriter Writer例子(示例10-5)try{FileWriterfw=newFileWriter("mydata.txt");PrintWriterout=newPrintWriter(fw);out.print("面朝大海,春暖花开!");out.close();fw.close();}catch(IOExceptione){e.printStackTrace();} 流的几种典型流向A-file(bytes)FileInputStream(bytes)DataInputStream(String)A-File(bytes)FileInputStream(bytes)BufferedInputStream(bytes)DataInputStream(ints,floats,Strings,others)(bytes)(bytes)FileReader(chars/Strings)LineNumberReader(chars/strings)流的基本原则是:高级流与低级流打交道,低级流与I/O设备,文件打叫道,高级流和低级流可以相互交互 特殊的文件流--RandomAccessFileRandomAccessFile是一种特殊的文件流,可以用它在文件的任何地方查找或者插入数据RandomAccessFile同时实现了DataInput和DataOutput接口,所以可以用它来读/写文件构造器:RandomAccessFile(java.io.Filef,Stringmode)RandomAccessFile(Stringfile,Stringmode)代码参见案例:10-7 小结java.io包中的内容Java基本I/O流字节流/字符流节点流(低级流)/处理流(高级流) 模块2直流单臂电桥的使用与分析一、教学目标终极教学目标:熟悉直流单臂电桥测量电阻的操作步骤,分析其工作原理。促成教学目标:熟练掌握欧姆定律的应用理解电阻的串、并联特性掌握电阻混联电路的分析和计算过程动手采用直流单臂电桥测量电阻,理解其工作原理二、工作任务能采用直流单臂电桥测量电阻,当直流单臂电桥检流计指示值为零的时候,计算各电阻中电流的大小。 三.实践知识:直流单臂电桥电阻元件是直流电路中最重要的元件之一,有关电阻值的测量方法也多种多样。通常最普遍的方法是直接采用万用表来测量,只不过测量的结果误差较大;实验室里往往采用伏安法来测量,步骤比较烦琐;要想精确的测量电阻阻值,直流电桥是最佳的测量仪表。直流电桥按其功能可分为直流单臂电桥和直流双臂电桥,其中直流单臂电桥主要适合精确测量1Ω以上的电阻,所以使用比较广泛。 1.直流单臂电桥简易原理图图1-24是直流单臂电桥简易原理图,当电桥检流计指示值为零的时候,才可以进行读数。图1-24直流单臂电桥简易原理图 2.直流单臂电桥外壳上的部件1)检流计指针:当有电流流过检流计时,指针会发生偏转,流过电流的方向不同,指针偏转的方向也不同。2)比例臂旋钮、比较臂旋钮:分别连接R1以及R2、R3电阻(实际电路中电阻有多组),通过调节旋钮可以选择相应的电阻与之相连接,最后的Rx读数为比例臂和比较臂读数的乘积。调零器:用以测量前的指针调零工作。必须先将检流计锁扣打开,才能进行调零。Rx接线柱:用以接被测电阻。检流计连接片:通常放在“外接”位置。为提高在高阻值测量中的精度,需外接高灵敏度检流计时,应将连接片放在“内接”位置,外接检流计接在“外接”两端钮上。检流计按钮开关“G”和电源开关“B”:旋转90°可锁住,测量过程中调平衡时按下按钮“B”然后轻按检流计按钮“G”;在测量具有电感的元件(如线圈)完毕时,需先松开检流计按钮,后松开电源按钮。图1-25直流单臂电桥外形图 3.直流单臂电桥测量过程1)将被测电阻接入“Rx”接线柱两端。估计被测电阻值,选择比例臂的适当数值。检查无误后,先按下电源开关“B”,再按下检流计按钮开关“G”,(按钮开关“B”“G”旋转90°可锁住),调节比较臂的四支旋钮,使检流计指针指“零”。此时电桥平衡,被测电阻值等于:比例臂读数乘比较臂读数(欧姆)。2)如无法估计被测电阻值,一般将比例臂放在1档,比较臂放在1000欧上,按下“B”按钮,然后轻按“G”按钮后即松开,如检流计指针晃向“+”的一边,说明被测电阻大于1000欧,可把比例臂放在10档,再次接下“B”、“G”按钮,如果指针仍在“+”边,可把比例臂放在100档。如果开始时指针晃向“-”边,则说明被测电阻小于1000欧,可把比例臂放在0.1档或0.01档上。如此,可得Rx的大约数值然后选定倍率,调节四个比较臂读数盘,使检流计平衡。 4.直流单臂电桥使用注意事项:1)使用前先把检流计锁扣或短路开关打开,并调节调零器使指针或光点置于零位。 2)Rx接好后,先估计一下被测量的电阻阻值范围,选择合适的R2/R3比率,以保证比较臂R4的四档电阻都能充分使用。例如:Rx为几个欧姆时,应选比率为0.001。 3)电源和检流计按钮的使用:测量时先按“电源”按钮,再按“检流计”按钮。选定倍率后,若检流计指针向“+”偏转,说明R4电阻小了,应增加比较臂R4数值。反之,指针若向“—”偏转,则应减小R4数值。测量完毕,先松开检流计按钮,后松开电源按钮。特别是在测量具有电感的元件(如线圈)一定要遵守上述操作顺序,否则将有很大的自感电动势作用于检流计,造成检流计损坏。 4)在电桥调平衡过程中,不要把检流计按钮按死,应是每改变一次比较臂电阻,按一次按钮测量一次,直至检流计偏转较小时,再按死检流计按钮。 5)测量结束不再使用时,应将检流计的锁扣锁上。问题:为什么直流单臂电桥这种桥式结构可以测量Rx阻值呢,它的工作原理是怎样的?这就需要我们讨论一下电阻的串并联问题。 四.理论知识1.电阻的串并联1)电阻串联电路设电压、电流参考方向关联,则  A.电流:各电阻顺序连接,各电阻中流过的电流相同;  B.电压:电路的总电压等于各串联电阻的电压之和,即: C.等效电阻:电阻串联,其等效电阻等于各分电阻之和;等效电阻大于任意一个串联的分电阻。即:D.分压:若已知串联电阻两端的总电压,求各分电阻上的电压称分压。电阻串联,各分电阻上的电压与电阻值成正比,电阻值大者分得的电压大。因此串联电阻电路可作分压电路。 E.功率:电阻串连时,各电阻消耗的功率与电阻大小成正比,即电阻值大者消耗的功率大;等效电阻消耗的功率等于各串连电阻消耗功率的总和。 2)电阻的并联设电压、电流参考方向关联,则A.电压:各电阻并联连接,各电阻中两端的电压相同;B.电流:电路的总电流等于各并联电阻的电流之和;(G=1/R为电导) C.等效电阻:D.分流:若已知并联电阻电路的总电流,求各分电阻上的电流称分流。E.功率:电阻并联时,各电阻消耗的功率与电阻大小成反比,即电阻值大者消耗的功率小;等效电阻消耗的功率等于各并连电阻消耗功率的总和。 电路中有电阻的串联,又有电阻的并联的电路称电阻的串并联电路。电阻相串联的部分具有电阻串联电路的特点,电阻相并联的部分具有电阻并联电路的特点。3)电阻的混联:例1求图1-31所示电路的I1,I4,U4解:①用分流方法: ②用分压方法:从上题可得求解串、并联电路的一般步骤: A.求出等效电阻或等效电导; B.应用欧姆定律求出总电压或总电流; C.应用欧姆定律或分压、分流公式求各电阻上的电流和电压。 判别电路的串并联关系一般应掌握下述四点: A.看电路的结构特点。若两电阻是首尾相联就是串联,是首首尾尾相联就是并联。 B.看电压电流关系。若流经两电阻的电流是同一个电流,那就是串联;若两电组上承受的是同一个电压,那就是并联。 C.对电路作变形等效。如左边的支路可以扭到右边,上面的支路可以翻到下面,弯曲的支路可以拉直等;对电路中的短线路可以任意压缩与伸长;对多点接地可以用短路线相连。D.找出等电位点。对于具有对称特点的电路,若能判断某两点是等电位点,则根据电路等效的概念,一是可以用短接线把等电位点联起来;二是把联接等电位点的支路断开(因支路中无电流),从而得到电阻的串并联关系。4)判别电路的串并联关系 练习题:求下列各电路中的等效电阻RAB. 直流单臂电桥的原理分析1.原理分析:图1-32是QJ24型直流单臂电桥原理图。其中R2、R3、R4为标准电阻元件。R4为比较臂,R2、R3为比率臂(R2/R3)单臂意即单比率臂。Rx为被测电阻,是为测量臂。直流单臂电桥用于测量阻值(1Ω~0.1MΩ)直流电阻。当电桥平衡时有: 2.数值计算:如图1-33,已知E=4.5V,R1=4Ω,R2=10Ω,R3=5Ω,当直流单臂电桥检流计指示值为零的时候,计算各电阻中电流的大小?解:当检流计指示值为零时,即意味着b、c两点同电位,R1与RX串联,R2与R3串联,然后两者再并联。电桥平衡时,RX=2Ω总电流I=E/R总=E/[(R1+RX)//(R2+R3)]=1.05AI1=(R2+R3)I/(R1+R2+R3+R4)=0.75AI2=I-I1=0.3AII1I2 五、拓展知识 直流双臂电桥直流单臂电桥只能测量1欧以上的电阻,而直流双臂电桥,用于测量低值(1欧以下)直流电阻。  如果低值电阻仍使用单臂电桥测量,则因Rx很小,而R2、R3、R4也必然很小,四个臂相联接的接点处的接触电阻值和接线电阻值都不容忽略,会使测量结果造成极大的误差。而双臂电桥则解决了这些问题。'