收藏 分销(赏)

第6章 输入输出流和文件.ppt

上传人:xrp****65 文档编号:10302103 上传时间:2025-05-20 格式:PPT 页数:119 大小:1.06MB
下载 相关 举报
第6章 输入输出流和文件.ppt_第1页
第1页 / 共119页
第6章 输入输出流和文件.ppt_第2页
第2页 / 共119页
点击查看更多>>
资源描述
,Java,语言,程序设计,(第,2,版),单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Java,语言程序设计(第,2,版),郑莉,清华大学,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,6,章,输入/输出流和文件,郑莉,2,目录,6.1 输入/输出流,6.2 文件读写,6.3 本章小结,3,6.1 输入/输出流,通常程序需要从外部获取/输出信息,这个“外部”范围很广,包括诸如键盘、显示器、文件、磁盘、网络、另外一个程序等,“信息”也可以是任何类型的,例如一个对象、串字符、图像、声音等,通过使用,java.io,包中的输入/输出流类就可以达到输入输出信息的目的,4,6.1.1 I/O,流的概念,I/O,流(,Input/Output),在,Java,中将信息的输入与输出过程抽象为,I/O,流,输入是指数据流入程序,输出是指数据从程序流出,一个流就是一个从源流向目的地的数据序列,IO,流类一旦被创建就会自动打开,通过调用,close,方法,可以显式关闭任何一个流,如果流对象不再被引用,,Java,的垃圾回收机制也会隐式地关闭它,6.1,输入/输出流,5,输入流,为了从信息源获取信息,程序打开一个输入流,程序可从输入流读取信息,输出流,当程序需要向目标位置写信息时,便需要打开一个输出流,程序通过输出流向这个目标位置写信息,6.1.1 I/O,流的概念(续),6.1,输入/输出流,6,对象,源?目标?或两者?,disk file,running program,monitor,keyboard,Internet connection,image scanner,mouse,Both,Both,Destination,Source,Both,Source,Source,6.1.1,I/O,流的概念(续),源和目标的类型,6.1,输入/输出流,7,不论数据从哪来,到哪去,也不论数据本身是何类型,读写数据的方法大体上都是一样的:,6.1.1,I/O,流的概念(续),读写数据的方法,读,写,打开一个流,读信息,关闭流,打开一个流,写信息,关闭流,6.1,输入/输出流,8,6.1.2 预定义的,I/O,流类概述,输入/输出流可以从以下几个方面进行分类,从流的方向划分,输入流,输出流,从流的分工划分,节点流,处理流,从流的内容划分,面向字符的流,面向字节的流,6.1,输入/输出流,9,面向字符的流:专门用于字符数据,面向字节的流:用于一般目的,6.1.2 预定义的,I/O,流类概述(续),java.io,包的顶级层次结构,6.1,输入/输出流,10,6.1.2 预定义的,I/O,流类概述(续),面向字符的流,面向字符的流,针对字符数据的特点进行过优化,提供一些面向字符的有用特性,源或目标通常是文本文件,6.1,输入/输出流,11,实现内部格式和文本文件中的外部格式之间转换,内部格式:,16-bit char,数据类型,外部格式:,UTF(Universal character set Transformation Format):,很多人称之为,Universal Text Format,包括,ASCII,码及非,ASCII,码字符,比如:斯拉夫,(Cyrillic),字符,希腊字符,亚洲字符等,6.1.2 预定义的,I/O,流类概述(续),面向字符的流,6.1,输入/输出流,12,面向字符的抽象类,Reader,和,Writer,java.io,包中所有字符流的抽象基类,Reader,提供了输入字符的,API,Writer,提供了输出字符的,API,它们的子类又可分为两大类,节点流:从数据源读入数据或往目的地写出数据,处理流:对数据执行某种处理,多数程序使用这两个抽象类的一系列子类来读入/写出文本信息,例如,FileReader,/,FileWriter,用来读/写文本文件,6.1.2 预定义的,I/O,流类概述(续),面向字符的流,6.1,输入/输出流,13,6.1.2 预定义的,I/O,流类概述(续),面向字符的流,阴影部分为节点流,6.1,输入/输出流,14,数据源或目标中含有非字符数据,必须用字节流来输入/输出,通常被用来读写诸如图片、声音之类的二进制数据,绝大多数数据是被存储为二进制文件的,世界上的文本文件大约只能占到2,通常二进制文件要比含有相同数据量的文本文件小得多,6.1.2 预定义的,I/O,流类概述(续),面向字节的流,6.1,输入/输出流,15,InputStream,和,OutputStream,是用来处理8位字节流的抽象基类,程序使用这两个类的子类来读写8位的字节信息,分为两部分,节点流,处理流,6.1.2 预定义的,I/O,流类概述(续),面向字节的流,6.1,输入/输出流,16,6.1.2 预定义的,I/O,流类概述(续),面向字节的流,阴影部分为节点流,6.1,输入/输出流,17,标准输入输出流对象,System,类的静态成员变量,包括,System.in,:InputStream,类型的,代表标准输入流,这个流是已经打开了的,默认状态对应于键盘输入。,System.out,:PrintStream,类型的,代表标准输出流,默认状态对应于屏幕输出,System.err,:PrintStream,类型的,代表标准错误信息输出流,默认状态对应于屏幕输出,6.1.2 预定义的,I/O,流类概述(续),标准输入输出,6.1,输入/输出流,18,6.1.2 预定义的,I/O,流类概述(续),标准输入输出,标准,I/O,重新导向,setIn(InputStream),:,设置标准输入流,setOut(PrintStream),:,设置标准输出流,setErr(PrintStream),:,设置标准错误输出流,6.1,输入/输出流,19,从键盘读入信息并在显示器上显示,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!,6.1,输入/输出流,20,System.in,程序启动时由,Java,系统自动创建的流对象,它是原始的字节流,不能直接从中读取字符,需要对其进行进一步的处理,InputStreamReader(System.in),以,System.in,为参数创建一个,InputStreamReader,流对象,相当于字节流和字符流之间的一座桥梁,读取字节并将其转换为字符,BufferedReader in,对,InputStreamReader,处理后的信息进行缓冲,以提高效率,6.1.2 预定义的,I/O,流类概述(续),例,6-1,说明,6.1,输入/输出流,21,Java SE 5.0,新特性,Java 5.0,终于也有了自己的,printf!,out.printf(“%-12s is%2d long”,name,l);,out.printf(“value=%2.2F”,value);,%n,是平台无关的换行标志,一个方便的扫描,API:,把文本转化成基本类型或者,String,Scanner s=new Scanner(System.in);,int n=s.nextInt();,还有下列方法:,nextByte(),nextDouble(),nextFloat,nextInt(),nextLine(),nextLong(),nextShort(),6.1,输入/输出流,22,重导向标准输入,System.in,和标准输出,System.out,import 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,6.1,输入/输出流,23,处理流,不直接与数据源或目标相连,而是基于另一个流来构造,从流读写数据的同时对数据进行处理,例6-1中的,InputStreamReader,和,BufferedReader,都属于处理流,InputStreamReader,读取字节并转换为字符,BufferedReader,对另一个流产生的数据进行缓冲,6.1.2 预定义的,I/O,流类概述(续),处理流,6.1,输入/输出流,24,用一行表达式实现:,BufferedReader,stdin=new,BufferedReader,(new,InputStreamReader,(,System.in,);,6.1.2 预定义的,I/O,流类概述(续),处理流,6.1,输入/输出流,25,IO,异常,多数,IO,方法在遇到错误时会抛出异常,因此调用这些方法时必须,在方法头声明抛出,IOException,异常,或者在,try,块中执行,IO,,然后捕获,IOException,6.1.2 预定义的,I/O,流类概述(续),I/O,异常,6.1,输入/输出流,26,6.2 文件读写,写文本文件,读文本文件,写二进制文件,读二进制文件,File,类,处理压缩文件,对象序列化,随机文件读写,27,6.2.1 写文本文件,本节知识点,FileWriter,类,创建一个磁盘文件,关闭一个磁盘文件,write(),方法,捕获,I/O,异常,BufferedWriter,类,6.2,文件读写,28,在,C,盘根目录创建文本文件,Hello.txt,,并往里写入若干行文本,import java.io.*;,class FileWriterTester,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,6.2,文件读写,29,打开,C,盘根目录下的,Hello.txt,文件,换行有些问题,例,6-4,中将解决这个问题,6.2.1 写文本文件(续),例,6-2,运行结果,6.2,文件读写,30,每次运行这个程序,都将删除已经存在的”,Hello.txt”,文件,创建一个新的同名文件,FileWriter,的构造方法有五个,本例是通过一个字符串指定文件名来创建,FileWriter,类的,write,方法向文件中写入字符,6.2,文件读写,6.2.1 写文本文件(续),例,6-2,说明,31,Writer,类的流可实现内部格式到外部磁盘文件格式的转换,“,Hello.txt”,是一个普通的,ASCII,码文本文件,每个英文字符占一个字节,中文字符占两个字节,Java,程序中的字符串则是每个字符占两个字节的,采用,Unicode,编码,close,方法清空流里的内容并关闭它。如果不调用该方法,可能系统还没有完成所有数据的写操作,程序就结束了,6.2.1 写文本文件(续),例,6-2,说明(续),6.2,文件读写,32,处理,IO,异常,import java.io.*;,class FileWriterTester,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,6.2,文件读写,33,运行此程序,会发现在原文件内容后面又追加了重复的内容,这就是将构造方法的第二个参数设为,true,的效果,如果将文件属性改为只读属性,再运行本程序,就会出现,IO,错误,程序将转入,catch,块中,给出出错信息,6.2.1 写文本文件(续),例,6-3,说明,6.2,文件读写,34,BufferedWriter,类,如果需要写入的内容很多,就应该使用更为高效的缓冲器流类,BufferedWriter,FileWriter,和,BufferedWriter,类都用于输出字符流,包含的方法几乎完全一样,但,BufferedWriter,多提供了一个,newLine(),方法用于换行,不同厂家生产的计算机(,IBM,Apple,VAX,Sun),对文字的换行方法不同,。newLine(),方法可以输出在当前计算机上正确的换行符,6.2.1 写文本文件(续),BufferedWriter,类,6.2,文件读写,35,使用,BufferedWriter,完成例6-2实现的功能,import java.io.*;,class BufferedWriterTester,public static void main(String args)throws IOException,String 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,6.2,文件读写,36,用任何文本编辑器打开,newHello.txt,都会出现正确的换行效果,6.2.1 写文本文件(续),例,6-4,运行结果,6.2,文件读写,37,6.2.2 读文本文件,本节知识点,Reader,FileReader,BufferedReader,和,readLine(),文本文件复制,6.2,文件读写,38,FileReader,类,从文本文件中读取字符,继承自,Reader,抽象类的子类,InputStreamReader,BufferedReader,读文本文件的缓冲器类,具有,readLine(),方法,可以对换行符进行鉴别,一行一行地读取输入流中的内容,继承自,Reader,6.2.2 读文本文件(续),6.2,文件读写,39,6.2.2 读文本文件(续),文件输入方法:,BufferedReader in=new,BufferedReader,(new,FileReader,(,fileName,);,6.2,文件读写,40,从,Hello.txt,中读取文本并显示在屏幕上,import java.io.*;,class BufferedReaderTester,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,6.2,文件读写,41,运行该程序,屏幕上将逐行显示出,Hello.txt,文件中的内容,FileReader,对象:创建后将打开文件,如果文件不存在,会抛出一个,IOException,BufferedReader,类的,readLine(),方法:从一个面向字符的输入流中读取一行文本。如果其中不再有数据,返回,null,Reader,类的,read(),方法:也可用来判别文件结束。该方法返回的一个表示某个字符的,int,型整数,如果读到文件末尾,返回-1。据此,可修改本例中的读文件部分:,int c;,while(c=in.read()!=-1)System.out.print(,(char)c,);,close(),方法:为了操作系统可以更为有效地利用有限的资源,应该在读取完毕后,调用该方法,6.2.2 读文本文件(续),例,6-5,说明,6.2,文件读写,42,指定源文件和目标文件名,将源文件的内容拷贝至目标文件。调用方式为:,java copy sourceFile destinationFile,6.2.2 读文本文件(续),例,6-6,6.2,文件读写,43,共包括两个类,CopyMaker,private boolean,openFiles(),private boolean,copyFiles(),private boolean,closeFiles(),public boolean,copy(String src,String dst),FileCopy,main(),6.2.2 读文本文件(续),例,6-6,6.2,文件读写,44,import java.io.*;,class CopyMaker,String sourceName,destName;,BufferedReader source;,BufferedWriter dest;,String line;,6.2,文件读写,6.2.2 读文本文件(续),例,6-6,45,private 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,6.2,文件读写,46,private 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,6.2,文件读写,47,private 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,6.2,文件读写,48,public boolean copy(String src,String dst),sourceName=src;,destName =dst;,return,openFiles(),&,copyFiles(),&,closeFiles(),;,public class FileCopy,/,一个文件中只能有一个公有类,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,6.2,文件读写,49,此文件,FileCopy.java,编译后生成,FileCopy.class,和,CopyMaker.class,两个字节码文件,运行结果,在命令行方式下执行如下命令,java FileCopy c:/Hello.txt c:/CopyHello.txt,则在,C,盘根目录下会出现,CopyHello.txt,文件,内容与,Hello.txt,完全相同,6.2.2 读文本文件(续),例,6-6,运行结果,6.2,文件读写,50,6.2.3 写二进制文件,本节知识点,二进制文件,OutputStream,FileOutputStream,BufferedOutputStream,DataOutputStream,writeInt(),writeDouble(),writeBytes(),6.2,文件读写,51,二进制文件,原则上讲,所有文件都是由8位的字节组成的,如果文件字节中的内容应被解释为字符,则文件被称为文本文件;如果被解释为其它含义,则文件被称为二进制文件,例如文字处理程序,例如字处理软件,Word,产生的,doc,文件中,数据要被解释为字体、格式、图形和其他非字符信息。因此,这样的文件是二进制文件,不能用,Reader,流正确读取,6.2.3 写二进制文件(续),二进制文件,6.2,文件读写,52,为什么需要二进制文件,输入输出更快,比文本文件小很多,有些数据不容易被表示为字符,6.2.3 写二进制文件(续),二进制文件,6.2,文件读写,53,抽象类,OutputStream,派生类,FileOutputStream,用于一般目的输出(非字符输出),用于成组字节输出,派生类,DataOutputStream,具有写各种基本数据类型的方法,将数据写到另一个输出流,它在所有的计算机平台上使用同样的数据格式,其常用的一些方法见表,6-2,其中,size,方法,可作为计数器,统计写入的字节数,6.2.3 写二进制文件(续),OutputStream,类,6.2,文件读写,54,6.2.3 写二进制文件(续),表6,-2,6.2,文件读写,55,6.2.3 写二进制文件(续),表6,-2,6.2,文件读写,56,6.2.3 写二进制文件(续),例,6-7,将三个,int,型数字255/0/1写入数据文件,data1.dat,import java.io.*;,class FileOutputstreamTester,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);,6.2,文件读写,57,运行结果,运行程序后,在,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,运行结果,6.2,文件读写,58,BufferedOutputStream,写二进制文件的缓冲流类,类似于文本文件中的,BufferedWriter,对于大量数据的写入,可提高效率,用法示例:,DataOutputStream,out=new,DataOutputStream,(,new,BufferedOutputStream,(,new,FileOutputStream,(fileName);,6.2.3 写二进制文件(续),BufferedOutputStream,类,6.2,文件读写,59,向文件中写入各种数据类型的数,并统计写入的字节数,import java.io.*;,class BufferedOutputStreamTester,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,6.2,文件读写,60,运行结果,4,bytes have been written,12 bytes have been written,16 bytes have been written,说明,这个程序可作为字节计数器,6.2.3 写二进制文件(续),例,6-8,运行结果,6.2,文件读写,61,向文件中写入内容为-1的一个字节,并读出。,import java.io.*;,public class FileOutputStreamTester,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,6.2,文件读写,62,运行结果,ffffffff,-1,ff,255,说明,用,ultraEdit,打开,c:/trytry.dat,文件,其内容为,FF,如果用,readByte,读入,其高24位都将补1,所以结果还是,-1,如果用,readUnsignedByte,读入,其高24位都将补0,结果就变成了,255,写的字节是连续的,中间没有分隔符,所以应该记住写的数据类型、个数等情况,以便将来利用,6.2.3 写二进制文件(续),例,6-9,运行结果,6.2,文件读写,63,6.2.4 读二进制文件,本节知识点,FileInputStream,DataInputStream,BufferedInputSteam,读写整数,读写单字节,6.2,文件读写,64,过滤流,读或写的同时对数据进行处理,通过另外一个流来构造一个过滤流,大部分,java.io,包所提供过滤流都是,FilterInputStream,和,FilterOutputStream,的子类,DataInputStream,和,DataOutputStream,BufferedInputStream,和,BufferedOutputStream,LineNumberInputStream,PushbackInputStream,PrintStream,6.2.4 读二进制文件(续),过滤流,6.2,文件读写,65,读取例6-7创建的数据文件中的3个,int,型数字,显示相加结果,import java.io.*;,class DataInputStreamTester,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,6.2,文件读写,66,该程序显示结果是,254,分析,readInt,方法可以从输入流中读入4个字节并将其当作,int,型数据,由于知道文件中存储的是3个,int,型数据,所以使用了3个读入语句,如果不知道数据的个数该怎么办呢?因为,DataInputStream,的读入操作如遇到文件结尾就会抛出,EOFException,异常,所以我们可以将读操作放入,try,块中,6.2.4 读二进制文件(续),例,6-10,运行结果,6.2,文件读写,67,将读操作放入,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,修改,6.2,文件读写,68,如果没有读到结尾,在读取过程中发生的异常属于,IOException,,,这样就需要我们再加一个,catch,块处理这种异常,一个,try,块后面可以跟不止一个,catch,块,用于处理各种可能发生的异常,我们可以在上段代码后再加上用于捕捉,IOException,的代码段如下,catch(,IOException,eof),System.out.println(Problem reading input);,instr.close();,6.2.4 读二进制文件(续),例,6-10,修改,6.2,文件读写,69,如果,catch,块中的,close,方法也发生异常,现在就没法捕获了。解决方法可以有,在,main,方法中抛出异常,比较简单,缺点是没有,catch,块,因而无法对异常进行进一步处理,例如给出提示信息,使用嵌套的,try,块,6.2.4 读二进制文件(续),例,6-10,修改,6.2,文件读写,70,import java.io.*;,class DataInputStreamTester,public static void main(String args),String fileName=c:/data1.dat;long sum=0;,try,DataInputStream instr=new DataInputStream(,new BufferedInputStrea
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服