首页 java(IO流)

java(IO流)

举报
开通vip

java(IO流)null第13章 输入、输出流第13章 输入、输出流 概述 13.1 文件 13.2 文件字节流 13.3 文件字符流 13.4 随机文件流 13.5 字节流 13.6 字符流 第13章 输入、输出流--概述第13章 输入、输出流--概述 1、流(Stream): 流是数据的有序序列,既可以是未加工的原始二进制数据,也可以是经过一定编码处理后的符合某种规定格式的特定数据,如字节流序列、字符流序列等。 2、输入流(InputStream):从外部设备(键盘、鼠标、文件、网络等)到计算机的数据流动; 3...

java(IO流)
null第13章 输入、输出流第13章 输入、输出流 概述 13.1 文件 13.2 文件字节流 13.3 文件字符流 13.4 随机文件流 13.5 字节流 13.6 字符流 第13章 输入、输出流--概述第13章 输入、输出流--概述 1、流(Stream): 流是数据的有序序列,既可以是未加工的原始二进制数据,也可以是经过一定编码处理后的符合某种规定格式的特定数据,如字节流序列、字符流序列等。 2、输入流(InputStream):从外部设备(键盘、鼠标、文件、网络等)到计算机的数据流动; 3、输出流(OutputStream):从计算机到外部设备(屏幕、打印机、文件等)的数据流动。 注:I/O的概念是相对的 4、java.io包提供若干输入流类和输出流类。 按读/写数据的不同类型分为两种:字节流和字符流。  字节流: 用于读/写字节类型的数据(包括ASCII表中的字符)。类可分为InputStream类及其子类及OutputStream类及其子类。     字符流:用于读/写字符(16位 Unicode 码)。包括Reader类及其子类及Writer类及其子类。 第13章 输入、输出流--概述第13章 输入、输出流--概述InputStream (抽象类) ByteArrayInputStream FileInputStream FilterInputStream BufferedInputStream DataInputStream LineNumberInputStream PushbackInputStream ObjectInputStream PipedInputStream SequenceInputStream StringBufferInputStreamOutputStream (抽象类) ByteArrayOutputStream FileOutputStream FilterOutputStream BufferedOutputStream DataOutputStream PrintStream ObjectOutputStream PipedOutputStream5、字节流第13章 输入、输出流--概述第13章 输入、输出流--概述Reader (抽象类:读入流) BufferedReader LineNumberReader CharArrayReader FilterReader PushbackReader InputStreamReader FileReader PipedReader StringReaderWriter (抽象类,写入流) BufferedWriter CharArrayWriter FilterWriter OutputStreamWriter FileWriter PipedWriter StringWriter PrintWriter6、字符流13.1 文件13.1 文件主要内容 一、文件类:File:表示文件或目录,可获取文件的属性,目录的信息,对文件和目录进行管理:创建与删除等 其直接父类是:Object 二、数据文件读取: 1)顺序读取文件: 按字节读取:文件字节流。 FileInputStream/FileOutputStream类 按字符读取:文件字符流 FileReader/FileWriter类 2)随机读取文件 (RandomAccessFile流) 13.1 文件13.1 文件一、文件类 1.文件类的构造 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 File(String fileDirname); // filename可以是文件也可以是目录。 File(String directoryPath, String fileDirname); File(File f, String fileDirname); 2.文件类的方法 public String getName() 获取文件的名字。 public boolean canRead() 文件是否是可读的。 public boolean canWrite() 文件是否可被写入。 public boolean exits() 文件是否存在。 public long length() 获取文件的长度(字节)。 public String getAbsolutePath() 获取文件的绝对路径。 public String getParent() 获取文件的父目录。 public boolean isFile() 文件是否是一个正常文件,而不是目录。 public boolean isDirectroy() 文件是否是一个目录。 public boolean isHidden() 判断文件是否是隐藏文件。 public long lastModified() 获取文件最后修改的时间(时间是从1970年午夜至文件最后修改时刻的毫秒数13.1 文件13.1 文件3、File类中的类变量 Public static String pathSeparator: 与系统有关的路径分隔符 Public static char pathSeparatorChar:与系统有关的默认路径分隔符 Public static String Separator:与系统有关的默认名称分隔符 Public static char SeparatorChar: 与系统有关的默认名称分隔符 例1:测试给定平台上的文件的路径分隔字符等 Import java.io.* Public class Li13_01{ System.out.println(“File.pathSeparator”); System.out.println(“File. pathSeparatorChar”); } 例2: 构造File对象,测试文件的属性等有关信息:Li13_02.java13.1 文件13.1 文件 4.目录(File对象调用下列方法) (1)创建目录 public boolean mkdir() 创建成功与否 (2)列出目录中的文件 public String[] list() 用字符串形式返回目录下的全部文件 public File [] listFiles() 用File对象形式返回目录下的全部文件。 public String[] list(FilenameFilter obj) 用字符串形式返回目录下的指定类型的所有文件。 public File [] listFiles(FilenameFilter obj) 用File对象返回目录下的指定类型所有文件。 注: FilenameFilter: 是接口,其方法为: public boolean accept(File dir,String name); 说明:list方法执行时, 参数 转速和进给参数表a氧化沟运行参数高温蒸汽处理医疗废物pid参数自整定算法口腔医院集中消毒供应 不断回调接口方法accept,参数name被实例化成目录中的一个文件名,dir为调用list的当前对象,返回true时,list方法就将目录dir中的文件存放到返回数组中。13.1 文件13.1 文件 5.文件的创建与删除 File f=new File(“c:/myletter","letter.txt"); 如果c:\myletter目录中没有名字为letter.txt文件, 文件对象f可以调用下述方法在c:\myletter目录中建立一个letter.txt的文件: public boolean createNewFile() public boolean delete() 删除当前文件,如:f.delete(); 6、举例 1、列出F:\Java09目录下java源文件的名字,并删除 F:\java09中的一个java源文件。 Example13_1.JAVA 2、构造一个File对象,如果该指定的目录不存在则创建该目录,同时统计并显示该目录下文件和子目录的个数以及该目录下文件的总长度。Li13_03.java13.1 文件13.1 文件 7.运行可执行文件 1)使用Runtime 类声明一个对象,如: Runtime ec; 2)使用静态getRuntime()方法创建对象: ec=Runtime.getRuntime(); 3)ec调用exec(String command)方法打开本地机的可执行文件或执行一个操作。 4)举例:Example13_2.java,Runtime对象打开windows平台上的记事本程序。 返回13.2 文件字节流13.2 文件字节流 一、FileInputStream类: 文件字节输入流   是InputStream的子类。按字节读取文件中的数据。 1)构造方法: FileInputStream(String filename) FileInputStream(File file) 例: FileInputStream ins=new FileInputStream(“Myfile.dat”) 或 try{ File f=new File(“Myfile.dat”); FileInputStream istream=new FileInputStream(f) }catch (IOException e){ System.out.println(e); }13.2 文件字节流13.2 文件字节流 2)读取数据   int read();   read方法从输入流中顺序读取单个字节的数据。该方法返回字节值(0~255之间的一个整数),读取位置到达文件末尾,则返回-1。   read方法的其它形式:     int read(byte b[ ]);    int read(byte b[ ], int off, int len);   作用:把多个字节读到一个字节数组中:   其中,off参数指定read方法把数据存放在字节数组b中的什么地方,len参数指定该方法将读取的最大字节数。   上面所示的这两个read方法都返回实际读取的字节个数,如果它们到达输入流的末尾,则返回 -1。13.2 文件字节流13.2 文件字节流二、FileOutputStream类   文件字节输出流。  1)构造方法:  FileOutputStream(String name)   FileOutputStream(File file)  2)写入数据   public void write(byte b[]) 写b.length个字节到输出流。 public void.write(byte b[],int off,int len) 从给定字节数组中起始于偏移量off处写len个字节到输出流,参数b是存放了数据的字节数组。 三、举例 Example13_3.java 首先将“欢迎Welcome”写入到“hello.txt”中,然后再读取该文件中的内容 13.3 文件字符流13.3 文件字符流一、FileReader类 文件字符输入流,是Reader的子类。按字符读取文件中的数据(Unicode编码,一个汉字被看成一个字符,占2个字节的存储空间)。 1)构造方法: FileReader(String name) FileReader (File file) 2)读取数据 int read() 输入流调用该方法从源中读取一个字符,该方法返回一个整数(0~65535之间的一个整数,Unicode字符值),如果未读出字符就返回-1。 int read(char b[ ]) 输入流调用该方法从源中读取b.length个字符到字符数组b中,返回实际读取的字符数目。如果到达文件的末尾,则返回-1。 int read(char b[ ], int off, int len) 输入流调用该方法从源中读取len个字符并存放到字符数组b中,返回实际读取的字符数目。如果到达文件的末尾,则返回-1。13.3 文件字符流13.3 文件字符流 二、FileWriter类 1)构造方法: FileWriter(String name) FileWriter (File file) 创建FileWriter对象。 输出流通过使用write()方法把字符数据写入输出流到达目的地。13.3 文件字符流13.3 文件字符流 2)写入数据:write public void write(char b[]) 写b.length个字符到输出流。 public void.write(char b[],int off,int len) 从给定字符数组中起始于偏移量off处写len个字符到输出流,参数b是存放了数据的字符数组。 void write(String str) 把字符串中的全部字符写入到输出流。 void write(String str,int off,int len) 从字符串str中起始于偏移量off处写len个字符到输出流。 三、举例 Example13_4.java13.4 随机读写流13.4 随机读写流1、 RandomAccessFile流 对于FileInputStream/FileOutputStream、FileReader/FileWriter来说,它们的实例都是顺序访问流,即只能进行顺序读/写。而类RandomAccessFile则允许对文件内容同时随机完成读和写操作,即用该类创建的流的指向既可以做为源,也可以做为目的地。它直接继承object。 2、构造方法: RandomAccessFile(File file, String mode) RandomAccessFile(String name, String mode) mode 的取值: “r” 只读. “rw” 读写. 13.4 随机读写流13.4 随机读写流3、常用方法: readXXX()或writeXXX(): 如ReadInt(), ReadLine(), WriteChar(), WriteDouble()等。 int skipBytes(int n):将指针向下移动若干字节 length():返回文件长度 long getFilePointer():返回指针当前位置 void seek(long pos):将指针调到所需位置 … 其它见帮助文件。 4、举例 Example13_5.java 将5个整数(占4个字节)写入文件tom.dat,再按逆序输出。13.5 字节流13.5 字节流InputStream (抽象类) ByteArrayInputStream FileInputStream FilterInputStream BufferedInputStream DataInputStream LineNumberInputStream PushbackInputStream ObjectInputStream PipedInputStream SequenceInputStream StringBufferInputStreamOutputStream (抽象类) ByteArrayOutputStream FileOutputStream FilterOutputStream BufferedOutputStream DataOutputStream PrintStream ObjectOutputStream PipedOutputStream一、字节流图13.5 字节流13.5 字节流二、 InputStream类 InputStream:抽象类,作为字节输入流的直接或间接的父类,主要方法:读取、移动指针、标记、复位、关闭等。这些方法大多可能抛出IOException异常。 public int read( ):从输入流的当前位置读取一个字节的数据,并返回一int型值,如果当前位置没有数据则返回-1。 public int read(byte[] b):该方法从输入流的当前位置开始读取多个字节,并将它们保存到字节数组b中,同时返回所读到的字节数,如果当前位置没有数据则返回-1。 public int read(byte[] b , int off , int len): public long skip(long n); public int available( ):返回输入流中可以读取的字节数。 public void close( ):关闭输入流,并释放流占用的系统资源。 13.5 字节流13.5 字节流三、 OutputStream类 OutputStream:抽象类,作为字节输出流的直接或间接的父类,当程序需要向外部设备输出数据时,需要创建OutputStream的某一个子类的对象来完成。 public void write(int b):将int型变量b的低字节写入到数据流的当前位置。 public void write(byte [] b):将字节数组b的b.length个字节写入到数据流的当前位置。 public void write(byte[] b, int off , int len):将字节数组b由下标off开始,长度为len的字节数据写到输出流。 public void flush( ):将缓冲区中的数据写到外设并清空缓冲区。 public void close( ):关闭输出流并释放输出流占用的资源。 四、举例 Li13_08.java,从键盘分别读入单个字节字符和多个字节字符,并在屏幕上显示。13.5 字节流13.5 字节流五、过滤流 FilterInputStream和FilterOutputStream分别对其他输入/输出流进行特殊处理,它们在读/写数据的同时可以对数据进行特殊处理。 类FilterInputStream和FilterOutputStream分别重写了父类InputStream和OutputStream的所有方法。 要使用过滤流,首先必须把它连接到某个输入/输出流上,通常在构造方法的参数中指定所要连接的流: protected FilterInputStream(InputStream in); protected FilterOutputStream(OutputStream out);13.5 字节流13.5 字节流1、缓冲流 类BufferedInputStream和BufferedOutputStream实现了带缓冲的过滤流,它提供了缓冲机制,把任意的I/O流“捆绑”到缓冲流上,可以提高该I/O流的读取效率。 在初始化时,除了要指定所连接的I/O流之外,还可以指定缓冲区的大小。缺省时是用32字节大小的缓冲区;最优的缓冲区大小常依赖于主机操作系统、可使用的内存空间以及机器的配置等;一般缓冲区的大小为内存页或磁盘块等的整数倍,如8912字节或更小。 BufferedInputStream(InputStream in[, int size]) BufferedOutputStream(OutputStream out[, int size])13.5 字节流13.5 字节流将缓冲流与文件流相接: FileInputStream in = new FileInputStream(“file1.txt”); FileOutputStream out = new FileOutputStream (“file2.txt”); BufferedInputStream bin = new BufferedInputStream(in,256) BufferedOutputStream bout = new BufferedOutputStream(out,256); int len; byte bArray[]=new byte[256]; len=bin.read(bArray); //len中得到的是实际读取的长度, bArray中得到的是数据13.5 字节流13.5 字节流对于BufferedOutputStream,只有缓冲区满时,才会将数据真正送到输出流,但可以使用flush()方法人为地将尚未填满的缓冲区中的数据送出。 public void copy(InputStream in, OutputStream out) throws IOException { out = new BufferedOutputStream(out, 4096); byte[] buf = new byte[4096]; int len = in.read(buf); while (len != -1) { out.write(buf, 0, len); len = in.read(buf); } out.flush(); //最后一次读取的数据可能不到4096字节 }13.5 字节流13.5 字节流2、数据流 DataInputStream和DataOutputStream,它们不仅能读/写字节流,而且能够读/写Java语言的基本数据类型,这些基本数据类型在流中的表示与内存中一样,不需转换。 1)构造方法 DataInputStream(InputStream in) DataOutputStream (OutPutStream out) 2) 其它方法 boolean readBoolean() byte readByte() short readShort() char readChar() int readInt() …… void writeBoolean(boolean v) void writeByte(int v) void writeChar(int v) void writeInt(int v) void writeFloat(float v) void writeDouble(double v) 3、举例:Li13_10.java13.6 字符流13.6 字符流一、概述 从JDK1.1开始, java.io包中加入了专门用于字符流(16位Unicode)处理的类,它们是以Reader和Writer为基础派生的一系列类。 同类InputStream和OutputStream一样,Reader和Writer也是抽象类,只提供了一系列用于字符流处理的接口。它们的方法与类InputStream和OutputStream类似,只不过其中的参数换成字符或字符数组。13.6 字符流13.6 字符流13.6 字符流13.6 字符流13.6 字符流13.6 字符流二、InputStreamReader和OutputStreamWriter 处理字符流的最基本的类,用来在字节流和字符流之间作为中介:从字节输入流读入字节,并按编码规范转换为字符;往字节输出流写字符时先将字符按编码规范转换为字节。构造方法: InputStreamReader(InputStream in); //缺省规范 InputStreamReader(InputStream in, String enc); //指定字符编码规范 enc,例如: InputStreamReader ir = new InputStreamReader( is, “8859_1” ); OutputStreamWriter(OutputStream out); //缺省规范 OutputStreamWriter(OutputStream out, String enc); 13.6 字符流13.6 字符流三、 BufferedReader和BufferedWriter 同样,为了提高字符流处理的效率,java.io中也提供了缓冲流BufferedReader和BufferedWriter。除了read()和write()方法外,它还提供了整行字符处理方法: public String readLine(): 从输入流中读取一行字符,行结束标志为‘\n’、‘\r’或两者一起。 举例:Li2_07.java 上机:P253 12 17 18 19
本文档为【java(IO流)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_924433
暂无简介~
格式:ppt
大小:231KB
软件:PowerPoint
页数:0
分类:互联网
上传时间:2012-07-12
浏览量:99