欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    输入输出流和文件.pptx

    • 资源ID:87475363       资源大小:478.27KB        全文页数:118页
    • 资源格式: PPTX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    输入输出流和文件.pptx

    26.1.1 I/O流的概念 I/O流(Input/Output)在Java中将信息的输入与输出过程抽象为I/O流输入是指数据流入程序输出是指数据从程序流出一个流就是一个从源流向目的地的数据序列IO流类一旦被创建就会自动打开通过调用close方法,可以显式关闭任何一个流,如果流对象不再被引用,Java的垃圾回收机制也会隐式地关闭它输入/输出流第2页/共118页3输入流为了从信息源获取信息,程序打开一个输入流,程序可从输入流读取信息输出流当程序需要向目标位置写信息时,便需要打开一个输出流,程序通过输出流向这个目标位置写信息6.1.1 I/O流的概念(续)输入/输出流第3页/共118页4对象对象源源?目标目标?或两者或两者?diskfilerunningprogrammonitorkeyboardInternetconnectionimagescannermouseBothBothDestinationSourceBothSourceSource输入/输出流6.1.1 I/O流的概念(续)源和目标的类型第4页/共118页5不论数据从哪来,到哪去,也不论数据本身是何类型,读写数据的方法大体上都是一样的:6.1.1 I/O流的概念(续)读写数据的方法读写打开一个流读信息关闭流打开一个流写信息关闭流输入/输出流第5页/共118页66.1.2 预定义的I/O流类概述输入/输出流可以从以下几个方面进行分类从流的方向划分输入流输出流从流的分工划分节点流处理流从流的内容划分面向字符的流面向字节的流输入/输出流第6页/共118页7面向字符的流:专门用于字符数据面向字节的流:用于一般目的6.1.2 预定义的I/O流类概述(续)java.io包的顶级层次结构输入/输出流第7页/共118页8输入/输出流6.1.2 预定义的I/O流类概述(续)面向字符的流面向字符的流针对字符数据的特点进行过优化,提供一些面向字符的有用特性源或目标通常是文本文件第8页/共118页9实现内部格式和文本文件中的外部格式之间转换内部格式:16-bit char 数据类型 外部格式:UTF(Universal character set Transformation Format):很多人称之为Universal Text Format包括ASCII 码及非ASCII 码字符,比如:斯拉夫(Cyrillic)字符,希腊字符,亚洲字符等6.1.2 预定义的I/O流类概述(续)面向字符的流输入/输出流第9页/共118页10面向字符的抽象类Reader和Writerjava.io包中所有字符流的抽象基类Reader提供了输入字符的APIWriter提供了输出字符的API它们的子类又可分为两大类节点流:从数据源读入数据或往目的地写出数据处理流:对数据执行某种处理多数程序使用这两个抽象类的一系列子类来读入/写出文本信息例如FileReader/FileWriter用来读/写文本文件6.1.2 预定义的I/O流类概述(续)面向字符的流输入/输出流第10页/共118页116.1.2 预定义的I/O流类概述(续)面向字符的流输入/输出流阴影部分为节点流第11页/共118页12数据源或目标中含有非字符数据,必须用字节流来输入/输出通常被用来读写诸如图片、声音之类的二进制数据绝大多数数据是被存储为二进制文件的,世界上的文本文件大约只能占到2,通常二进制文件要比含有相同数据量的文本文件小得多6.1.2 预定义的I/O流类概述(续)面向字节的流输入/输出流第12页/共118页13InputStream和OutputStream是用来处理8位字节流的抽象基类,程序使用这两个类的子类来读写8位的字节信息分为两部分节点流处理流6.1.2 预定义的I/O流类概述(续)面向字节的流输入/输出流第13页/共118页146.1.2 预定义的I/O流类概述(续)面向字节的流输入/输出流阴影部分为节点流第14页/共118页15标准输入输出流对象System类的静态成员变量包括System.in:InputStream类型的,代表标准输入流,这个流是已经打开了的,默认状态对应于键盘输入。System.out:PrintStream类型的,代表标准输出流,默认状态对应于屏幕输出System.err:PrintStream类型的,代表标准错误信息输出流,默认状态对应于屏幕输出6.1.2 预定义的I/O流类概述(续)标准输入输出输入/输出流第15页/共118页166.1.2 预定义的I/O流类概述(续)标准输入输出标准I/O重新导向setIn(InputStream):设置标准输入流setOut(PrintStream):设置标准输出流setErr(PrintStream):设置标准错误输出流输入/输出流第16页/共118页17从键盘读入信息并在显示器上显示import java.io.*;public class Echo public static void main(String args)throws IOException BufferedReader in=new BufferedReader(new InputStreamReader(System.in);String s;while(s=in.readLine().length()!=0)System.out.println(s);6.1.2 预定义的I/O流类概述(续)例6_1输入/输出流运行结果Hello!Hello!第17页/共118页18System.in程序启动时由Java系统自动创建的流对象,它是原始的字节流,不能直接从中读取字符,需要对其进行进一步的处理InputStreamReader(System.in)以System.in为参数创建一个InputStreamReader流对象,相当于字节流和字符流之间的一座桥梁,读取字节并将其转换为字符BufferedReader in对InputStreamReader处理后的信息进行缓冲,以提高效率6.1.2 预定义的I/O流类概述(续)例6_1说明输入/输出流第18页/共118页19Java SE 5.0新特性 Java 5.0终于也有了自己的printf!out.printf(“%-12s is%2d long”,name,l);out.printf(“value=%2.2F”,value);%n 是平台无关的换行标志一个方便的扫描API:把文本转化成基本类型或者StringScanner s=new Scanner(System.in);int n=s.nextInt();还有下列方法:next.Byte(),nextDouble(),nextFloat,nextInt(),nextLine(),nextLong(),nextShort()第19页/共118页20重导向标准输入System.in和标准输出System.outimport java.io.*;public class Redirecting public static void main(String args)throws IOException BufferedInputStream in=new BufferedInputStream(new FileInputStream(Redirecting.java);PrintStream out=new PrintStream(new BufferedOutputStream(new FileOutputStream(test.out);System.setIn(in);System.setOut(out);System.setErr(out);BufferedReader br=new BufferedReader(new InputStreamReader(System.in);String s;while(s=br.readLine()!=null)System.out.println(s);out.close();/Remember this!6.1.2 预定义的I/O流类概述(续)Redirecting.java输入/输出流第20页/共118页21处理流不直接与数据源或目标相连,而是基于另一个流来构造从流读写数据的同时对数据进行处理例6-1中的InputStreamReader和BufferedReader都属于处理流InputStreamReader读取字节并转换为字符BufferedReader对另一个流产生的数据进行缓冲6.1.2 预定义的I/O流类概述(续)处理流输入/输出流第21页/共118页22用一行表达式实现:BufferedReader stdin=new BufferedReader (new InputStreamReader(System.in);6.1.2 预定义的I/O流类概述(续)处理流输入/输出流第22页/共118页23 IO异常多数IO方法在遇到错误时会抛出异常,因此调用这些方法时必须在方法头声明抛出IOException异常或者在try块中执行IO,然后捕获IOException6.1.2 预定义的I/O流类概述(续)I/O异常输入/输出流第23页/共118页246.2 文件读写写文本文件读文本文件写二进制文件读二进制文件File类处理压缩文件对象序列化随机文件读写第24页/共118页256.2.1 写文本文件 本节知识点FileWriter类 创建一个磁盘文件 关闭一个磁盘文件 write()方法捕获I/O异常 BufferedWriter 类文件读写第25页/共118页26在C盘根目录创建文本文件Hello.txt,并往里写入若干行文本import java.io.*;class Ex6_2 public static void main(String args)throws IOException /main方法中声明抛出IO异常 String fileName=C:Hello.txt;FileWriter writer=new FileWriter(fileName);writer.write(Hello!n);writer.write(This is my first text file,n );writer.write(You can see how this is done.n);writer.write(输入一行中文也可以n);writer.close();6.2.1 写文本文件(续)例6_2文件读写第26页/共118页27打开C盘根目录下的Hello.txt文件换行有些问题,例6_4中将解决这个问题6.2.1 写文本文件(续)例6_2运行结果文件读写第27页/共118页286.2.1 写文本文件(续)例6_2说明每次运行这个程序,都将删除已经存在的”Hello.txt”文件,创建一个新的同名文件FileWriter的构造方法有五个,本例是通过一个字符串指定文件名来创建FileWriter类的write方法向文件中写入字符第28页/共118页29Writer类的流可实现内部格式到外部磁盘文件格式的转换“Hello.txt”是一个普通的ASCII码文本文件,每个英文字符占一个字节,中文字符占两个字节Java程序中的字符串则是每个字符占两个字节的,采用Unicode编码close方法清空流里的内容并关闭它。如果不调用该方法,可能系统还没有完成所有数据的写操作,程序就结束了6.2.1 写文本文件(续)例6_2说明(续)文件读写第29页/共118页30处理IO异常import java.io.*;class Ex6_3 public static void main(String args)String fileName=c:Hello.txt;try /将所有IO操作放入try块中 FileWriter writer=new FileWriter(fileName,true);writer.write(Hello!n);writer.write(This is my first text file,n );writer.write(You can see how this is done.n);writer.write(输入一行中文也可以n);writer.close();catch(IOException iox)System.out.println(Problem writing+fileName);6.2.1 写文本文件(续)例6_3文件读写第30页/共118页31运行此程序,会发现在原文件内容后面又追加了重复的内容,这就是将构造方法的第二个参数设为true的效果如果将文件属性改为只读属性,再运行本程序,就会出现IO错误,程序将转入catch块中,给出出错信息6.2.1 写文本文件(续)例6_3说明文件读写第31页/共118页32BufferedWriter类如果需要写入的内容很多,就应该使用更为高效的缓冲器流类BufferedWriterFileWriter和BufferedWriter类都用于输出字符流,包含的方法几乎完全一样,但BufferedWriter多提供了一个newLine()方法用于换行不同厂家生产的计算机(IBM,Apple,VAX,Sun)对文字的换行方法不同。newLine()方法可以输出在当前计算机上正确的换行符6.2.1 写文本文件(续)BufferedWriter类文件读写第32页/共118页33使用BufferedWriter完成例6-2实现的功能import java.io.*;/ex6_4class Ex6_4 public static void main(String args)throws IOExceptionString fileName=C:/newHello.txt;BufferedWriter out=new BufferedWriter(new FileWriter(fileName);out.write(Hello!);out.newLine();out.write(This is another text file using BufferedWriter,);out.newLine();out.write(So I can use a common way to start a newline);out.close();6.2.1 写文本文件(续)例6_4文件读写第33页/共118页34用任何文本编辑器打开newHello.txt都会出现正确的换行效果6.2.1 写文本文件(续)例6_4运行结果文件读写第34页/共118页356.2.2 读文本文件 本节知识点Reader FileReader BufferedReader和readLine()文本文件复制 文件读写第35页/共118页36FileReader类从文本文件中读取字符继承自Reader抽象类的子类InputStreamReaderBufferedReader读文本文件的缓冲器类具有readLine()方法,可以对换行符进行鉴别,一行一行地读取输入流中的内容继承自Reader6.2.2 读文本文件(续)文件读写第36页/共118页376.2.2 读文本文件(续)文件输入方法:BufferedReader in=new BufferedReader(new FileReader(fileName);文件读写第37页/共118页38从Hello.txt中读取文本并显示在屏幕上import java.io.*;class Ex6_5 public static void main(String args)String fileName=C:/Hello.txt,line;try BufferedReader in=new BufferedReader(new FileReader(fileName );line=in.readLine();/读取一行内容 while(line!=null)System.out.println(line);line=in.readLine();in.close();catch(IOException iox)System.out.println(Problem reading +fileName);6.2.2 读文本文件(续)例6_5文件读写第38页/共118页39运行该程序,屏幕上将逐行显示出Hello.txt文件中的内容FileReader对象:创建后将打开文件,如果文件不存在,会抛出一个IOExceptionBufferedReader类的readLine()方法:从一个面向字符的输入流中读取一行文本。如果其中不再有数据,返回nullReader类的read()方法:也可用来判别文件结束。该方法返回的一个表示某个字符的int型整数,如果读到文件末尾,返回-1。据此,可修改本例中的读文件部分:int c;while(c=in.read()!=-1)System.out.print(char)c);close()方法:为了操作系统可以更为有效地利用有限的资源,应该在读取完毕后,调用该方法6.2.2 读文本文件(续)例6_5说明文件读写第39页/共118页40指定源文件和目标文件名,将源文件的内容拷贝至目标文件。调用方式为:java copy sourceFile destinationFile6.2.2 读文本文件(续)例6_6文件读写第40页/共118页41共包括两个类CopyMakerprivate boolean openFiles()private boolean copyFiles()private boolean closeFiles()public boolean copy(String src,String dst)Ex6_6main()6.2.2 读文本文件(续)例6_6文件读写第41页/共118页426.2.2 读文本文件(续)例6_6import java.io.*;class CopyMaker String sourceName,destName;BufferedReader source;BufferedWriter dest;String line;第42页/共118页43private boolean openFiles()try source=new BufferedReader(new FileReader(sourceName);catch(IOException iox)System.out.println(Problem opening +sourceName);return false;try dest=new BufferedWriter(new FileWriter(destName);catch(IOException iox)System.out.println(Problem opening +destName);return false;return true;6.2.2 读文本文件(续)例6_6文件读写第43页/共118页44private boolean copyFiles()try line=source.readLine();while(line!=null)dest.write(line);dest.newLine();line=source.readLine();catch(IOException iox)System.out.println(Problem reading or writing);return false;return true;6.2.2 读文本文件(续)例6_6文件读写第44页/共118页45private boolean closeFiles()boolean retVal=true;try source.close();catch(IOException iox)System.out.println(Problem closing +sourceName);retVal=false;try dest.close();catch(IOException iox)System.out.println(Problem closing +destName);retVal=false;return retVal;6.2.2 读文本文件(续)例6_6文件读写第45页/共118页46 public boolean copy(String src,String dst)sourceName=src;destName =dst;return openFiles()&copyFiles()&closeFiles();public class Ex6_6 /一个文件中只能有一个公有类public static void main(String args)if(args.length=2)new CopyMaker().copy(args0,args1);else System.out.println(Please Enter File names);6.2.2 读文本文件(续)例6_6文件读写第46页/共118页47此文件Ex6_6.java编译后生成Ex6_6.class和CopyMaker.class两个字节码文件运行结果在命令行方式下执行如下命令java Ex6_6 c:/Hello.txt c:/CopyHello.txt则在C盘根目录下会出现CopyHello.txt文件,内容与Hello.txt完全相同6.2.2 读文本文件(续)例6_6运行结果文件读写第47页/共118页486.2.3 写二进制文件 本节知识点二进制文件 OutputStream FileOutputStream BufferedOutputStream DataOutputStream writeInt()writeDouble()writeBytes()文件读写第48页/共118页49二进制文件原则上讲,所有文件都是由8位的字节组成的如果文件字节中的内容应被解释为字符,则文件被称为文本文件;如果被解释为其它含义,则文件被称为二进制文件例如文字处理程序,例如字处理软件Word产生的doc文件中,数据要被解释为字体、格式、图形和其他非字符信息。因此,这样的文件是二进制文件,不能用Reader流正确读取6.2.3 写二进制文件(续)二进制文件文件读写第49页/共118页50为什么需要二进制文件输入输出更快比文本文件小很多有些数据不容易被表示为字符6.2.3 写二进制文件(续)二进制文件第50页/共118页51抽象类OutputStream派生类FileOutputStream用于一般目的输出(非字符输出)用于成组字节输出派生类DataOutputStream具有写各种基本数据类型的方法将数据写到另一个输出流它在所有的计算机平台上使用同样的数据格式其常用的一些方法见表6-2其中size方法,可作为计数器,统计写入的字节数6.2.3 写二进制文件(续)OutputStream类文件读写第51页/共118页526.2.3 写二进制文件(续)表6_2文件读写第52页/共118页536.2.3 写二进制文件(续)表6_2文件读写第53页/共118页546.2.3 写二进制文件(续)例6_7将三个int型数字255/0/1写入数据文件data1.datimport java.io.*;class Ex6_7 public static void main(String args)String fileName=c:/data1.dat;int value0 =255,value1 =0,value2=-1;try DataOutputStream out=new DataOutputStream(new FileOutputStream(fileName );out.writeInt(value0);out.writeInt(value1);out.writeInt(value2);out.close();catch(IOException iox)System.out.println(Problem writing +fileName);文件读写第54页/共118页55运行结果运行程序后,在C盘生成数据文件data1.dat用写字板打开没有任何显示用ultraEdit打开查看其二进制信息,内容为00 00 00 FF 00 00 00 00 FF FF FF FF,每个int数字都是32个bit的说明FileOutputStream类的构造方法负责打开文件“data1.dat”用于写数据FileOutputStream类的对象与DataOutputStream对象连接,写基本类型的数据6.2.3 写二进制文件(续)例6_7运行结果文件读写第55页/共118页56BufferedOutputStream写二进制文件的缓冲流类类似于文本文件中的BufferedWriter对于大量数据的写入,可提高效率用法示例:DataOutputStream out=new DataOutputStream(new BufferedOutputStream(new FileOutputStream(fileName);6.2.3 写二进制文件(续)BufferedOutputStream类文件读写第56页/共118页57向文件中写入各种数据类型的数,并统计写入的字节数import java.io.*;class Ex6_8 public static void main(String args)throws IOException String fileName=mixedTypes.dat;DataOutputStream dataOut=new DataOutputStream(new BufferedOutputStream(new FileOutputStream(fileName );dataOut.writeInt(0);System.out.println(dataOut.size()+bytes have been written.);dataOut.writeDouble(31.2);System.out.println(dataOut.size()+bytes have been written.);dataOut.writeBytes(JAVA);System.out.println(dataOut.size()+bytes have been written.);dataOut.close();6.2.3 写二进制文件(续)例6_8文件读写第57页/共118页58运行结果4 bytes have been written12 bytes have been written16 bytes have been written说明这个程序可作为字节计数器6.2.3 写二进制文件(续)例6_8运行结果文件读写第58页/共118页59向文件中写入内容为-1的一个字节,并读出。import java.io.*;public class Ex6_9 public static void main(String args)throws Exception DataOutputStream out=new DataOutputStream(new FileOutputStream(c:/trytry.dat);out.writeByte(-1);out.close();DataInputStream in=new DataInputStream(new FileInputStream(c:/trytry.dat);int a=in.readByte();System.out.println(Integer.toHexString(a);System.out.println(a);in.skip(-1);/往后一个位置,以便下面重新读出 a=in.readUnsignedByte();System.out.println(Integer.toHexString(a);System.out.println(a);in.close();6.2.3 写二进制文件(续)例6_9文件读写第59页/共118页60运行结果ffffffff-1ff255说明用ultraEdit打开c:/trytry.dat文件,其内容为FF如果用readByte读入,其高24位都将补1,所以结果还是-1如果用readUnsignedByte读入,其高24位都将补0,结果就变成了255写的字节是连续的,中间没有分隔符,所以应该记住写的数据类型、个数等情况,以便将来利用6.2.3 写二进制文件(续)例6_9运行结果文件读写第60页/共118页616.2.4 读二进制文件 本节知识点FileInputStreamDataInputStreamBufferedInputSteam 读写整数 读写单字节 文件读写第61页/共118页62过滤流读或写的同时对数据进行处理通过另外一个流来构造一个过滤流大部分java.io 包所提供过滤流都是FilterInputStream和FilterOutputStream的子类DataInputStream 和 DataOutputStream BufferedInputStream 和 BufferedOutputStream LineNumberInputStream PushbackInputStream PrintStream6.2.4 读二进制文件(续)过滤流文件读写第62页/共118页63读取例6-7创建的数据文件中的3个int型数字,显示相加结果import java.io.*;class Ex6_10 public static void main(String args)String fileName=c:data1.dat;int sum=0;try DataInputStream instr=new DataInputStream(new BufferedInputStream(new FileInputStream(fileName);sum+=instr.readInt();sum+=instr.readInt();sum+=instr.readInt();System.out.println(The sum is:+sum);instr.close();catch(IOException iox)System.out.println(Problem reading +fileName);6.2.4 读二进制文件(续)例6_10文件读写第63页/共118页64该程序显示结果是254分析readInt方法可以从输入流中读入4个字节并将其当作int型数据由于知道文件中存储的是3个int型数据,所以使用了3个读入语句如果不知道数据的个数该怎么办呢?因为DataInputStream的读入操作如遇到文件结尾就会抛出EOFException异常,所以我们可以将读操作放入try块中6.2.4 读二进制文件(续)例6_10运行结果文件读写第64页/共118页65将读操作放入try块中,使遇到文件结尾就会抛出EOFException异常,进入到相应的catch块中try while(true)sum+=instr.readInt();catch(EOFException eof)System.out.println(The sum is:+sum);instr.close();6.2.4 读二进制文件(续)例6_10修改文件读写第65页/共118页66如果没有读到结尾,在读取过程中发生的异常属于IOException,这样就需要我们再加一个catch块处理这种异常一个try块后面可以跟不止一个catch块,用于处理各种可能发生的异常我们可以在上段代码后再加上用于捕捉IOException的代码段如下catch(IOException eof)System.out.println(Problem reading input);instr.close();6.2.4 读二进制文件(续)例6_10修改文件读写第66页/共118页67如果catch块中的close方法也发生异常,现在就没法捕获了。解决方法可以有在main方法中抛出异常比较简单缺点是没有catch块,因而无法对异常进行进一步处理,例如给出提示信息使用嵌套的try块6.2.4 读二进制文件(续)例6_10修改文件读写第67页/共118页68import java.io.*;class Ex6_11 public static void main(String args)String fileName=c:/data1.dat;long sum=0;try DataInputStream instr=new DataInputStream(new BufferedInputStream(new ileInputStream(fileName);try while(true)sum+=instr.readInt();catch(EOFException eof)System.out.println(The sum is:+sum);instr.close();catch(IOException iox)System.out.println(IO Problems with +fileName);6.2.4 读二进制文件(续)例6_11文件读写第68页/共118页69由于文本文件的存储方式其实也是二进制代码,因此也可使用InputStream类的方法读取用InputStream类读取文本文件并打印在屏幕上import java.io.*;public class Ex6_12 public static void main(String args)throws IOException FileInputStream s=new FileInputStream(c:/Hello.txt);int c;while(c=s.read()!=-1)/读取1字节,结束返回-1 System.out.write(c);s.close();6.2.4 读二进制文件(续)例6_12文件读写第69页/共118页70DataOutputStream的writeByte方法public final void writeByte(int b)throws IOException将int的最不重要字节写入输出流DataInputStream的readUnsignedByte方法public final int readUnsignedByte()throws IOException从输入流中读取1字节存入int的最不重要字节6.2.4 读二进制文件(续)读写字节文件读写第70页/共118页71从命令行输入源文件名和目标文件名,将源文件复制为目标文件。import java.io.*;class CopyBytes public static void main(String args)DataInputStream instr;DataOutputStream outstr;if(args.length!=2)System.out.println(Please enter file names);return;try instr=new DataInputStream(new BufferedInputStream(new FileInputStream(args0);outstr=new DataOutputStream(new BufferedOutputStream(new FileOutputStream(args1);6.2.4 读二进制文件(续)文件复制程序文件读写第71页/共118页72 try int

    注意事项

    本文(输入输出流和文件.pptx)为本站会员(莉***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开