java输入输出流总结
java输入输出流实验报告总结

java输入输出流实验报告总结Java输入输出流是Java中非常重要的概念,也是Java程序设计的基础。
在Java 程序中,输入输出流用于处理与设备之间的数据传输,例如键盘、鼠标、文件等。
Java的输入输出流主要包含两种类型:字节流和字符流。
字节流以字节为最小读写单位,而字符流以字符为最小读写单位。
Java的输入流有很多种类型,例如:InputStream、ByteArrayInputStream、FileInputStream等。
这些输入流的共同特点是读取外部数据到程序中。
Java的输出流也有多种类型,例如:OutputStream、ByteArrayOutputStream、FileOutputStream等。
这些输出流的共同特点是将程序中的数据输出到外部。
下面将以实验报告的形式进行总结,详细介绍Java输入输出流的原理和使用方法。
实验一:字节流输入输出1. 实验目的:掌握字节流输入输出的基本使用方法。
2. 实验内容:编写一个程序,实现从文件中读取数据,然后将数据输出到另一个文件中。
3. 实验步骤:a. 创建一个输入流对象,用于读取原始文件的数据。
b. 创建一个输出流对象,用于将读取到的数据输出到目标文件中。
c. 循环读取输入流中的数据,直到读取到文件末尾。
d. 将读取到的数据写入输出流中。
e. 关闭输入流和输出流。
4. 实验结果:成功读取原始文件中的数据,并将数据输出到目标文件中。
实验二:字符流输入输出1. 实验目的:掌握字符流输入输出的基本使用方法。
2. 实验内容:编写一个程序,实现从键盘输入文字,然后将文字输出到屏幕上。
3. 实验步骤:a. 创建一个字符输入流对象,用于读取键盘输入的文字。
b. 创建一个字符输出流对象,用于将读取到的文字输出到屏幕上。
c. 循环读取输入流中的文字,直到读取到换行符。
d. 将读取到的文字写入输出流中。
e. 关闭输入流和输出流。
4. 实验结果:成功从键盘输入文字,并将文字输出到屏幕上。
Java的输入与输出流(实验报告)

成都大学实验报告实验项目名称Java的输入与输出流一、实验目的:1. 理解I/O流的概念,掌握其分类2. 掌握文本文件读写、二进制文件读写二、实验内容(包括源程序及相关说明):1. 分别使用FileWriter 和BufferedWriter 往文件中写入10万个随机数,比较用时。
源代码如下:(1)import java.io.*;public class Ex1_1 {public static void main(String[] args) throws IOException{long t=System.currentTimeMillis();FileWriter fw =new FileWriter("d:\\Ex1.txt");for(int i=1;i<=100000;i++){fw.write((int)(Math.random()*10000)+" \n");}fw.close();t=System.currentTimeMillis()-t;System.out.println("The elapsed: "+t);}}(2)import java.io.*;public class Ex1_1 {public static void main(String[] args) throws IOException{long t=System.currentTimeMillis();BufferedWriter fw=new BufferedWriter(new FileWriter("d:\\Ex1.txt"));for(int i=1;i<=100000;i++){fw.write((int)(Math.random()*10000)+"\n");}fw.close();t=System.currentTimeMillis()-t;System.out.println("The elapsed: "+t);}}2. 生成一个html文件,使其能显示2的幂次(0~9)的表格如下:代码如下:import java.io.*;public class Ex1_1 {public static void main(String[] args) throws IOException{BufferedWriter bw=new BufferedWriter(new FileWriter("d:\\Ex2.html"));bw.write("<table border=1 align=center width=200 height=250>");bw.newLine();bw.write("<tr><td align=center>Power of 2<td align=center>Value</tr>");for(int i=0;i<=9;i++){bw.write("<tr><td align=center>"+i+"<td align=center>"+Math.pow(i, 2)+"</tr>");}bw.write("</table>");bw.newLine();bw.close();}}3. 在文本文件bigbook.txt中包含有很长篇幅的英语短文,编写程序要求统计文件的所有短文中包含英文字母“A”的个数,并显示统计的时间。
(JAVA)从零开始之--对象输入输出流ObjectInputStream、ObjectO。。。

(JAVA)从零开始之--对象输⼊输出流ObjectInputStream、ObjectO。
对象的输⼊输出流 : 主要的作⽤是⽤于写⼊对象信息与读取对象信息。
对象信息⼀旦写到⽂件上那么对象的信息就可以做到持久化了 对象的输出流: ObjectOutputStream 对象的输⼊流: ObjectInputStream使⽤:对象的输出流将指定的对象写⼊到⽂件的过程,就是将对象序列化的过程,对象的输⼊流将指定序列化好的⽂件读出来的过程,就是对象反序列化的过程。
既然对象的输出流将对象写⼊到⽂件中称之为对象的序列化,那么可想⽽知对象所对应的class必须要实现Serializable接⼝。
(查看源码可得知:Serializable接⼝没有任何的⽅法,只是作为⼀个标识接⼝存在)。
1、将User类的对象序列化1class User implements Serializable{//必须实现Serializable接⼝2 String uid;3 String pwd;4public User(String _uid,String _pwd){5this.uid = _uid;6this.pwd = _pwd;7 }8 @Override9public String toString() {10return "账号:"+this.uid+" 密码:"+this.pwd;11 }12 }1314public class Demo1 {1516public static void main(String[] args) throws IOException {17//假设将对象信息写⼊到obj.txt⽂件中,事先已经在硬盘中建⽴了⼀个obj.txt⽂件18 File f = new File("F:\\obj.txt");19 writeObjec(f);20 System.out.println("OK");21 }2223//定义⽅法把对象的信息写到硬盘上------>对象的序列化。
输入输出流

输入输出流的相关简介系别:计算机技术与信息管理系班级:09软件技术姓名:徐燕学号:09207745目录一.Java输入输出流详解 (3)1.什么是流: (3)2、流的分类 (3)2.1字节流 (3)2.2.字符流 (4)2.3.对象流 (4)4.字节流与字符流的区别: (4)二.流的层次结构 (5)1.InputStream类 (6)2.OutputStream类 (7)3.FileInputStream类 (7)4.FileOutputStream类 (8)5.File类 (8)6.从一个流构造另一个流 (9)7.BufferInputStream和bufferOutputStream (10)8.printstream (11)三.字符流的读取和写入 (11)1.BufferInputStream和bufferOutputStream (14)2.printstream (15)四.java的i/o输入输出类怎么分出是输入流还是输出流? (15)五.java中什么时候用输入流,什么时候用输出流? (16)六.JA V A输出输入流函数注意事项 (16)1. 处理概述: (17)2. 字节流: (17)2.1输入流: (17)2.2输出流: (18)3、字符流: (18)3.1. 字符流处理概述 (18)3.2. 字符流处理 (19)3.3流处理中的其它方法: (20)七.总结 (21)一.Java输入输出流详解stream代表的是任何有能力产出数据的数据源,或是任何有能力接收数据的接收源。
在Java的IO中,所有的stream(包括Inputstream和Out stream)都包括两种类型:1.什么是流:流是一个抽象的概念。
当Java程序需要从数据源读取数据时,会开启一个到数据源的流。
数据源可以是文件,内存或者网络等。
同样,当程序需要输出数据到目的地时也一样会开启一个流,数据目的地也可以是文件、内存或者网络等。
javaio流学习总结范文

javaio流学习总结范文一、io流的三种分类方式1.按流的方向分为:输入流和输出流2.按流的数据单位不同分为:字节流和字符流3.按流的功能不同分为:节点流和处理流二、io流的四大抽象类:字符流:readerwriter字节流:inputstream(读数据)outputstream(写数据)三、inputstream的基本方法intread()throwsioexception读取一个字节以整数形式返回,如果返回-1已到输入流的末尾voidclose()throwsioexception关闭流释放内存资源longskip(longn)throwsioexception跳过n个字节不读四、outputstream的基本方法voidwrite(intb)throwsioexception向输出流写入一个字节数据voidflush()throwsioexception将输出流中缓冲的数据全部写出到目的地五、writer的基本方法voidwrite(intc)throwsioexception向输出流写入一个字符数据voidwrite(stringstr)throwsioexception将一个字符串中的字符写入到输出流voidwrite(stringstr,intoffset,intlength)将一个字符串从offset开始的length个字符写入到输出流voidflush()throwsioexception将输出流中缓冲的数据全部写出到目的地六、reader的基本方法intread()throwsioexception读取一个字符以整数形式返回,如果返回-1已到输入流的末尾七、节点流类型八、访问文件之fileinputstream和fileoutputstream继承基类用于向文件中输入输出字节九、访问文件之filereader和filewriter继承基类用于向文件中输入输出字符----输出流在构造函数第二个参数可以设置true意义为跟在已有文件后进行输入----此类流会抛出filenotfoundexception需要对其进行显示捕捉十、缓冲流:缓冲流要套接在相应的节点流之上,提高了读写的效率。
java 标准输入输出流

java 标准输入输出流
计算机系统都有标准的输入设备和标准输出设备。
对一般系统而言,标准输入设备通常是键盘,而标准输出设备是屏幕。
Java程序经常需要从键盘上输入数据,从屏幕上输出数据,为此频繁创建输入/输出流对象将很不方便。
因此,Java语言事先定义好了两个对象,分别对系统的标准输入和标准输出相联系,如System.in和System.out,另外还定义了标准的System.err错误输出流。
System.in是标准输入流,是InputStream类的实例。
可以使用read()方法从键盘上读取字节,也可以将它包装成数据流读取各种类型的数据和字符串。
在使用System.in的read()方法时,由于read()方法在定义时抛出了IOException 异常,所以必须使用try-catch结构捕获异常或声明抛出异常;
System.out和System.err是标准输出流和标准错误输出流,是PrintStream类的实例。
如果从标准输入流键盘上输入基本数据类型,可以将标准输入流包装成具有缓
执行上述代码,结果如图12-12所示。
图12-12 System.in 标准输入流。
04747 java知识点总结

第七章:输入和输出流第一节:数据流的基本概念1.在java中,把不同类型的输入、输出源抽象为流,其中输入或输出的数据成为数据流,用统一的接口表示。
2.数据流是指一组有顺序的、有起点和终点的字节集合。
程序从键盘接收数据或向文件中写数据,都可以使用数据流来完成。
3.流分为输入数据流和输出数据流。
输入数据流只能读不能写;而输出数据流只能写不能读。
从数据流中读取数据是,必须有一个数据源与该数据流相连(FileInput Stream in = new FileInputStream(“javatest.txt”);)(实例化)4.Java.io包中提供了表示数据流的4个基本抽象类(不可以实例化),分别是InputStream、OutputStream、Reader和Writer。
因此涉及数据流操作的程序中,几乎都要使用引入语句:import java.io.*5.为了使对象的状态能够方便地永久保存下来,java.io包中又提供了以字节流为基础的用于对象的永久化保存状态的机制,通过实现ObjectInput和Object Output接口来完成。
6.输入数据流提供的主要操作方法有:(得到-1,标志数据流结束)int read():从输入流读取一个字节的二进制数据int read( byte [ ] b):将多个字节读到数组中,填满整个数组int read( byte [ ] b ,int off , int len): 从输入流中读取长度为len的数据,从数组b中下标为off的位置开始放置读入的数据,读毕返回读取的字节数。
7.void close(): 关闭数据流int available(): 返回目前可以从数据流中读取的字节数long skip(long l): 跳过数据流中指定数量的字节不读取,返回值表示实际跳过的字节数8.如需要反向读取数据流,则使用回推操作(Push Back)Boolean markSupported(): 用于测试数据流是否支持回推操作void mark(int): 用于标记数据流的当前位置,并划出一个缓冲区,其大小至少为指定参数的大小。
JAVA输入输出流

int read() int read(byte[] buffer) int read(byte[] buffer, int offset, int length)
其它方法:
void close() int available() skip(long n) boolean markSupported() void mark(int readlimit) void reset()
9.4常用输入输出流类(2)
FileReader-文件字符输入流
构造方法: public FileReader(String name) throws FileNotFoundException public FileReader(File file) throws FileNotFoundException
方法:参见InputStream FileOutputStream-文件字节输出流
构造方法: public FileOutputStream(String name) throws FileNotFoundException public FileOutputStream(File file) throws FileNotFoundException 方法:参见OutputStream
//标准输出流System.out是字节输出流
//把标准输出流转化成缓冲字节输出流 /用BufferedOutputStream中函数Write输出 //数据从缓冲区中全部输出
import java.io.*; public class Test3 { public static void main(String[] args) throws IOException{ String s = "Hello"; OutputStreamWriter o = new OutputStreamWriter(System.out); o.write(s); 把标准字节输出流转化 成字符输出流 o.flush(); } }
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、数据流的基本概念流一般分为输入流(Input Stream)和输出流(Output Stream)两类,但这种划分并不是绝对的。
比如一个文件,当向其中写数据时,它就是一个输出流;当从其中读取数据时,它就是一个输入流。
当然,键盘只是一个数人流,而屏幕则只是一个输出流。
java的标准数据流:标准输入输出指在字符方式下(如DOS),程序与系统进行交互的方式,分为三种:标准输入studin,对象是键盘。
标准输出stdout,对象是屏幕。
标准错误输出stderr,对象也是屏幕。
二、java.io包中的数据流和文件类字节流:从InputStream和OutputStream派生出来的一系列类。
这类流以字节(byte)为基本处理单位。
InputStream、OutputStreamFileInputStream、FileOutputStreamPipedInputStream、PipedOutputStreamByteArrayInputStream、ByteArrayOutputStreamFilterInputStream、FilterOutputStreamDataInputStream、DataOutputStreamBufferedInputStream、BufferedOutputStream字符流:从Reader和Writer派生出的一系列类,这类流以16位的Unicode码表示的字符为基本处理单位。
Reader、WriterInputStreamReader、OutputStreamWriterFileReader、FileWriterCharArrayReader、CharArrayWriterPipedReader、PipedWriterFilterReader、FilterWriterBufferedReader、BufferedWriterStringReader、StringWriter三、字节流方法InputStream 和OutputStreamread():从流中读入数据skip():跳过流中若干字节数available():返回流中可用字节数mark():在流中标记一个位置reset():返回标记过得位置markSupport():是否支持标记和复位操作close():关闭流int read() :从输入流中读一个字节,形成一个0~255之间的整数返回(是一个抽象方法)。
int read(byte b[]) :读多个字节到数组中。
int read(byte b[], int off, int len):从输入流中读取长度为len的数据,写入数组b中从索引of f开始的位置,并返回读取得字节数。
write(int b) :将一个整数输出到流中(只输出低位字节,抽象)write(byte b[]) :将字节数组中的数据输出到流中write(byte b[], int off, int len) :将数组b中从off指定的位置开始,长度为len的数据输出到流中flush():刷空输出流,并将缓冲区中的数据强制送出close():关闭流注:进行I/O操作时可能会产生I/O例外,属于非运行时例外,应该在程序中处理。
如:型FileNot FoundException, EOFException, IOException四、文件操作类的方法File类File类声明如下:public class File ectends Object implements Serializable,Comparable构造方法:public File(String pathname)public File(File patent,String child)public File(String patent,String child)文件名的处理String getName( );//得到一个文件的名称(不包括路径)String getPath( );//得到一个文件的路径名String getAbsolutePath( );//得到一个文件的绝对路径名String getParent( );//得到一个文件的上一级目录名String renameTo(File newName); //将当前文件名更名为给定文件的完整路径文件属性测试boolean exists( );//测试当前File对象所指示的文件是否存在boolean canWrite( );//测试当前文件是否可写boolean canRead( );//测试当前文件是否可读boolean isFile( );//测试当前文件是否是文件(不是目录)boolean isDirectory( );//测试当前文件是否是目录普通文件信息和工具long lastModified( );//得到文件最近一次修改的时间long length( ); //得到文件的长度,以字节为单位boolean delete( ); //删除当前文件目录操作boolean mkdir( ); //根据当前对象生成一个由该对象指定的路径String list( ); //列出当前目录下的文件文件过滤器类FilterInputStream和FilterOutputStream分别对其他输入/输出流进行特殊处理,它们在读/写数据的同时可以对数据进行特殊处理。
另外还提供了同步机制,使得某一时刻只有一个线程可以访问一个输入/输出流。
类FilterInputStream和FilterOutputStream分别重写了父类InputStream和OutputStream的所有方法,同时,它们的子类也应该重写它们的方法以满足特定的需要•要使用过滤流,首先必须把它连接到某个输入/输出流上,通常在构造方法的参数中指定所要连接的流:– FilterInputStream(InputStream in);– FilterOutputStream(OutputStream out);注:这两个类是抽象类,构造方法也是保护方法类BufferedInputStream和BufferedOutputStream实现了带缓冲的过滤流,它提供了缓冲机制,把任意的I/O流“捆绑”到缓冲流上,可以提高读写效率•在初始化时,除了要指定所连接的I/O流之外,还可以指定缓冲区的大小。
缺省大小的缓冲区适合于通常的情形;最优的缓冲区大小常依赖于主机操作系统、可使用的内存空间以及机器的配置等;一般缓冲区的大小为内存页或磁盘块等地整数倍,如8912字节或更小。
– BufferedInputStream(InputStream in[, int size])– BufferedOutputStream(OutputStream out[, int size])文件对话框随机文件操作于InputStream 和OutputStream 来说,它们的实例都是顺序访问流,也就是说,只能对文件进行顺序地读/写。
随机访问文件则允许对文件内容进行随机读/写。
在java中,类RandomAccessFile 提供了随机访问文件的方法。
类RandomAccessFile的声明为:public class RandomAccessFile extends Object implements DataInput, DataOutputFile:以文件路径名的形式代表一个文件FileDescriptor:代表一个打开文件的文件描述FileFilter & FilenameFilter:用于列出满足条件的文件File.list(FilenameFilter fnf)File.listFiles(FileFilter ff)FileDialog.setFilenameFilter(FilenameFilter fnf)• FileInputStream & FileReader:顺序读文件• FileOutputStream & FileWriter:顺序写文件• RandomAccessFile:提供对文件的随机访问支持类RandomAccessFile则允许对文件内容同时完成读和写操作,它直接继承Object,并且同时实现了接口DataInput和DataOutput,提供了支持随机文件操作的方法DataInput和DataOutput中的方法•readInt(), writeDouble()…int skipBytes(int n):将指针乡下移动若干字节length():返回文件长度long getFilePointer():返回指针当前位置void seek(long pos):将指针调到所需位置void setLength(long newLength):设定文件长度构造方法:RandomAccessFile(File file, String mode)RandomAccessFile(String name, String mode)mode 的取值–“r” 只读. 任何写操作都将抛出IOException。
–“rw” 读写. 文件不存在时会创建该文件,文件存在时,原文件内容不变,通过写操作改变文件内容。
–“rws” 同步读写. 等同于读写,但是任何协操作的内容都被直接写入物理文件,包括文件内容和文件属性。
–“rwd” 数据同步读写. 等同于读写,但任何内容写操作都直接写到物理文件,对文件属性内容的修改不是这样。
五、字符流的方法Reader类和Writer类在JDK1.1之前,java.io包中的流只有普通的字节流(以byte为基本处理单位的流),这种流对于以16位的Unicode码表示的字符流处理很不方便。
从JDK1.1开始,java.io包中加入了专门用于字符流处理的类,它们是以Reader和Writer为基础派生的一系列类同类InputStream和OutputStream一样,Reader和Writer也是抽象类,只提供了一系列用于字符流处理的接口。
它们的方法与类InputStream和OutputStream类似,只不过其中的参数换成字符或字符数组Reader类• void close()• void mark(int readAheadLimit)• boolean markSupported() :• int read()• int read(char[] cbuf)• int read(char[] cbuf, int off, int len)• boolean ready()• void reset()• long skip(long n)Writer类• void close()• void flush()• void write(char[] cbuf)• void write(char[] cbuf, int off, int len)• void write(int c)• void write(String str)• void write(String str, int off, int len)Java中Scanner的用法Scanner是SDK1.5新增的一个类,可是使用该类创建一个对象.Scanner reader=new Scanner(System.in);然后reader对象调用下列方法(函数),读取用户在命令行输入的各种数据类型: next.Byte(),nextDouble(),nextFloat,nextInt(),nextLin(),nextLong(),nextShot()上述方法执行时都会造成堵塞,等待用户在命令行输入数据回车确认.例如,拥护在键盘输入12.34,hasNextFloat()的值是true,而hasNextInt()的值是false. NextLine()等待用户输入一个文本行并且回车,该方法得到一个String类型的数据。