Java语言程序设计(文件输入输出、Java网络编程)课件_第1页
Java语言程序设计(文件输入输出、Java网络编程)课件_第2页
Java语言程序设计(文件输入输出、Java网络编程)课件_第3页
Java语言程序设计(文件输入输出、Java网络编程)课件_第4页
Java语言程序设计(文件输入输出、Java网络编程)课件_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java语言程序设计马 皓1第1页,共83页。第九章 文件输入输出概念Java I/O类Java I/O操作标准输入/输出文件读写操作目录管理随机访问文件文件属性2第2页,共83页。概念I/O来源控制台(console, 如DOS窗口)打印/读入文件(file)读/写网络接口(TCP/UDP端口)读/写针对数据的读写以流(stream)的方式对数据进行操作数据源程序读出数 据流目的程序写入数 据流流的重要特性顺序读/写sequentially3第3页,共83页。概念读/写流的一般流程读(Reading)open a stream /打开读出流while more information /判断

2、 read information /读close the stream /关闭流写(Writing)open a stream /打开写入流while more information /判断 write information /写close the stream /关闭流4第4页,共83页。概念两种流的定义(读取信息的基本数据单位)字节流(byte stream): 一个字节(8-bit)一个字节读/写字符流(character stream):一个字符一个字符读/写(具有特定字符编码的数据)j a v a 语 言6A 61 76 61 D3 EF D1 D4以字节流的方式读: 读8次,

3、8个字节以字符流的方式读: 读6次,6个字符5第5页,共83页。第九章 文件输入输出概念Java I/O类Java I/O操作标准输入/输出文件读写操作目录管理随机访问文件文件属性6第6页,共83页。Java I/O类字节流的读/写操作(来自JDK1.0)java.io.InputStream (抽象类)public abstract int read()public int read(byte b)public int read(byte b, int offset, int length)到达流的终点,无数据读出则返回-1java.io.OutputStream (抽象类)public a

4、bstract void write(int b)public void write(byte b)public void write(byte b, int offset, int length) 所有的读/写函数都抛出java.io.IOException7第7页,共83页。Java I/O类字符流的读/写操作(来自JDK1.1)java.io.Reader (抽象类)public int read()public int read(char cbuf)publc abstract int read(char cbuf, int offset, int length)到达流的终点,无数据读

5、出则返回-1java.io.Writer (抽象类)public void write(int c)public void write(char cbuf)public void write(char cbuf, int offset, int length)所有的读/写函数都抛出java.io.IOException8第8页,共83页。Java I/O类I/O流的层次关系class java.io.InputStream的子类class java.io.ByteArrayInputStreamclass java.io.FileInputStreamclass java.io.FilterI

6、nputStreamclass java.io.BufferedInputStreamclass java.io.DataInputStream class java.io.LineNumberInputStreamclass java.io.PushbackInputStreamclass java.io.ObjectInputStream class java.io.PipedInputStreamclass java.io.SequenceInputStreamclass java.io.StringBufferInputStream 9第9页,共83页。Java I/O类I/O流的层次

7、关系class java.io.OutputStream的子类class java.io.ByteArrayOutputStreamclass java.io.FileOutputStreamclass java.io.FilterOutputStreamclass java.io.BufferedOutputStreamclass java.io.DataOutputStream class java.io.PrintStreamclass java.io.ObjectOutputStreamclass java.io.PipedOutputStream 10第10页,共83页。Java I

8、/O类I/O流的层次关系class java.io.Reader的子类class java.io.BufferedReaderclass java.io.LineNumberReaderclass java.io.CharArrayReaderclass java.io.FilterReader class java.io.PushbackReaderclass java.io.InputStreamReaderclass java.io.FileReaderclass java.io.PipedReaderclass java.io.StringReader 11第11页,共83页。Java

9、 I/O类I/O流的层次关系class java.io.Writer的子类class java.io.BufferedWriterclass java.io.CharArrayWriterclass java.io.FilterWriterclass java.io.OutputStreamWriter class java.io.FileWriterclass java.io.PipedWriterclass java.io.PrintWriterclass java.io.StringWriter 12第12页,共83页。Java I/O类I/O流的分类 (12个功能类)I/O类型所用到的

10、类描述文件FileReader/FileWriterFileInputStream/FileOutputStream文件流(读/写文件)缓冲BufferedReader/BufferedWriterBufferedInputStreamBufferedOutputStream提高读/写效率打印PrintWriter PrintStream (System.out.println()内存CharArrayReader/CharArrayWriterByteArrayInputStreamByteArrayOutputStreamStringReader/StringWriterStringBuf

11、ferInputStream读/写内存13第13页,共83页。Java I/O类I/O流的分类 (12个功能类)I/O类型所用到的类描述字节流和字符流的转换InputStreamReaderOutputStreamWriter将InputStream中读入的字节转为字符/将字符转为字节写入OutputStream管道pipePipedReader/PipedWriterPipedInputStream/PipedOutputStream文件流(读/写文件)连接ConcatenationSequenceInputStream多个输入流连接为一个输入流对象串行化ObjectInputStreamO

12、bjectOutputStreamObject Serialization14第14页,共83页。Java I/O类I/O流的分类 (12个功能类)I/O类型所用到的类描述基本数据转化DataInputStreamDataOutputStreamJAVA基本数据类型的读/写计数LineNumberReaderLineNumberInputStream读操作时记录行数Peeking AheadPushbackReaderPushbackInputStream可回退缓存(pushback buffer)过滤FilterReader/FilterWriterFilterInputStream/Fil

13、terOutputStream在读/写操作时对数据进行过滤15第15页,共83页。第九章 文件输入输出概念Java I/O类Java I/O操作标准输入/输出文件读写操作目录管理随机访问文件文件属性16第16页,共83页。Java I/O操作主要内容标准输入/输出控制台屏幕打印和键盘读入文件I/O操作文件读写如何提高文件读写效率流的包装(Wrap)基本数据转换流目录管理随机访问文件(Random Access File)文件属性网络流操作(见第十三讲)17第17页,共83页。输出: 控制台屏幕打印class Test public static void main(String args) S

14、ystem.out.println(“Hello World!”);标准输入/输出18第18页,共83页。输入: 键盘读入import java.io.IOException;class Test public static void main(String args) throws IOException byte b = new byte10;System.out.println(Received number= + System.in.read(b);标准输入/输出C:java TestAReceived number=3C:19第19页,共83页。文件读/写流程打开文件流条件判断读出/

15、写入关闭文件流两种类型文件FileInputStream/FileOutputStream (字节流)FileReader/FileWriter (字符流)文件读写操作20第20页,共83页。字节流构造方法public FileInputStream(File file) throws FileNotFoundExceptionpublic FileInputStream(String name) throws FileNotFoundExceptionpublic File(String pathname)public FileOutputStream(File file) throws F

16、ileNotFoundExceptionpublic FileOutputStream(File file, boolean append) throws FileNotFoundException /是否向已存在的文件后添加public FileOutputStream(String name) throws FileNotFoundExceptionpublic FileOutputStream(String name, boolean append) throws FileNotFoundException文件读写操作21第21页,共83页。文件读写-实例1文件读写操作import ja

17、va.io.*;public class CopyBytes public static void main(String args) throws IOException File inputFile = new File(“original.txt); File outputFile = new File(“result.txt); FileInputStream in = new FileInputStream(inputFile); FileOutputStream out = new FileOutputStream(outputFile); int c; while (c = in

18、.read() != -1) out.write(c); in.close(); out.close(); public int read ()throws IOExceptionpublic int read (byte b) throws IOExceptionpublic int read (byte b, int off, int len) throws IOExceptionFileInputStream in = new FileInputStream(“original.txt);FileOutputStream out = new FileOutputStream(“resul

19、t.txt);public void write (int b) throws IOExceptionpublic void write (byte b) throws IOExceptionpublic void write (byte b, int off, int len) throws IOException22第22页,共83页。字符流构造方法public FileReader(File file) throws FileNotFoundExceptionpublic FileReader(String fileName) throws FileNotFoundExceptionpu

20、blic File(String pathname)public FileWriter(File file) throws IOExceptionpublic FileWriter(File file, boolean append) throws IOExceptionpublic FileWriter(String fileName) throws IOExceptionpublic FileWriter(String fileName, boolean append) throws IOException文件读写操作23第23页,共83页。文件读写-实例2文件读写操作import jav

21、a.io.*;public class Copy public static void main(String args) throws IOException File inputFile = new File(“original.txt); File outputFile = new File(“result.txt); FileReader in = new FileReader(inputFile); FileWriter out = new FileWriter(outputFile); int c; while (c = in.read() != -1) out.write(c);

22、 in.close(); out.close(); FileReader in = new FileReader(“original.txt);FileWriter out = new FileWriter(“result.txt);public int read () throws IOExceptionpublic int read (char cbuf) throws IOExceptionpublic int read (char cbuf, int off, int len) throws IOExceptionpublic void write (int b) throws IOE

23、xceptionpublic void write (char cbuf) throws IOExceptionpublic void write (char cbuf, int off, int len) throws IOException24第24页,共83页。两类缓冲流针对字节流java.io.BufferedInputStream类java.io.BufferedOutputStream类针对字符流java.io.BufferedReader类java.io.BufferedWriter类如何提高文件读写效率25第25页,共83页。构造方法public BufferedInputSt

24、ream(InputStream in) 2048 bytespublic BufferedInputStream(InputStream in, int size)public BufferedOutputStream(OutputStream out) 512 bytespublic BufferedOutputStream(OutputStream out, int size)public BufferedReader(Reader in) 8192 bytespublic BufferedReader(Reader in, int sz)public BufferedWriter(Wr

25、iter out) 8192 bytepublic BufferedWriter(Writer out, int sz)如何提高文件读写效率26第26页,共83页。 String filename = “test.txt”; FileInputStream fis = new FileInputStream(filename); int count = 0; int c; while (c = fis.read() != -1) if (c = A) count+; fis.close(); System.out.println(count);如何提高文件读写效率-实例1如何提高文件读写效率

26、String filename = “test.txt”; FileInputStream fis = new FileInputStream(filename); BufferedInputStream bis = new BufferedInputStream(fis); int count = 0; int c; while (c = bis.read() != -1) if (c = A) count+; fis.close(); System.out.println(count); FileInputStream fis = new FileInputStream(“test.txt

27、”); int count = 0; final int BUFSIZE = 1024; byte buf = new byteBUFSIZE; int len; while (len = fis.read(buf) != -1) for (int i = 0; i len; i+) if (bufi = A) count+; fis.close();27第27页,共83页。 String filename = “test.txt”; FileReader fr = new FileReader(filename); BufferedReader br = new BufferedReader

28、(fr); int count = 0; while (br.readLine() != null) count+; br.close(); System.out.println(count);如何提高文件读写效率-实例2如何提高文件读写效率28第28页,共83页。概述流的包装(wrap) FileReader fr = new FileReader (filename); BufferedReader br = new BufferedReader (fr); BufferedReader br = new BufferedReader ( new FileReader(filename);

29、 PrintWriter out = new PrintWriter ( new BufferedWriter(new FileWriter(filename); public String readLine() in java.io.BufferedReader public void println(String x) in java.io.PrintWriter利用不同流的特点(方法)寻找合适的方法完成特定的需求对已有的流进行再处理29第29页,共83页。流的种类节点流直接对数据源进行读/写操作的流处理流对一个已有的流进行某种操作的流流的包装(wrap)30第30页,共83页。节点流Fi

30、leInputStream, PipedInputStream, ByteArrayInputStream, StringBufferInputStreamFileOutputStream, PipedOutputStream, ByteArrayOutputStreamCharArrayReader, FileReader, PipedReader, StringReaderCharArrayWriter, FileWriter, PipedWriter, StringWriter流的包装(wrap)31第31页,共83页。处理流FilterOutputStream, DataOutputS

31、tream, BufferedOutputStream, PrintStreamFilterInputStream, LineNumberInputStream, DataInputStream, BufferedInputStream, PushbackInputStreamBufferedReader, LineNumberReader, InputStreamReader, FilterReader, PushBackReaderBufferedWriter, OutputStreamReader, FilterWriter, PrintWriter流的包装(wrap)32第32页,共8

32、3页。一个实例java.io.FileReaderpublic FileReader(File file) throws FileNotFoundExceptionpublic FileReader(String fileName) throws FileNotFoundExceptionjava.io.BufferedReaderpublic BufferedReader(Reader in) 8192 bytespublic BufferedReader(Reader in, int sz)流的包装改变了流的行为流的包装(wrap)33第33页,共83页。流的包装(wrap)-实例1流的包

33、装(wrap)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); public static final InputStream in (java.lang.System)pub

34、lic InputStreamReader(InputStream in)public BufferedReader(Reader in)程序如何结束(跳出while循环)?34第34页,共83页。概述java.io.DataInputStream类public DataInputStream(InputStream in)public final boolean readBoolean()public final byte readByte()public final char readChar()public final int readInt()java.io.DataOutputStr

35、eam类public DataOutputStream(OutputStream out)public final void writeBoolean(boolean v)public final void writeByte(int v)public final void writeChar(int v)public final void writeInt(int v)基本数据转换流35第35页,共83页。DataOutputStream out = new DataOutputStream(new FileOutputStream(invoice1.txt);double prices =

36、 19.99, 9.99;int units= 12, 8;String descs = Java T-shirt, Java Mug;for (int i = 0; i prices.length; i +) out.writeDouble(pricesi);out.writeChar(t);out.writeInt(unitsi);out.writeChar(t);out.writeChars(descsi);out.writeChar(n);out.close();基本数据转换流-实例基本数据转换流DataInputStream in = new DataInputStream( new

37、 FileInputStream(invoice1.txt);double total;try while (true) double price = in.readDouble(); in.readChar(); int unit = in.readInt(); in.readChar(); char chr; StringBuffer desc = new StringBuffer(20);while (chr = in.readChar()!= n) desc.append(chr);System.out.println(Youve ordered + unit + units of +

38、 desc + at $ + price); total = total + unit * price; catch (EOFException e) System.out.println(For a TOTAL of: $ + total);in.close();19.99 12 Java T-shirt9.99 8 Java Mug 36第36页,共83页。概述java.io.File类: 文件和目录的路径名构造方法public File(String pathname)public File(String parent, String child)public File(File par

39、ent, String child)parent通常表示一个目录, child则表示一个目录或文件路径名(pathname)UNIX平台上绝对路径的前缀“/”,相对路径无前缀,例“/etc/inetd.conf”、“inetd.conf”Windows平台,绝对路径名的前缀由“盘符:”组成;UNC 路径名前缀为“”,然后是主机名和共享名,相对路径名无盘符,例“c:windowsnotepad.exe”、“notepad.exe”目录管理37第37页,共83页。方法public boolean canWrite()/canRead()public boolean exists()public b

40、oolean delete() 删除文件或目录,若删除目录,要求该目录必须为空public boolean createNewFile() 创建一个空文件,当且仅当该文件不存在public boolean isDirectory()/isFile()/isHidden()public long lastModified()/public boolean setLastModified(long time)public String list() 得到当前目录下的所有文件名和目录名,若该File对象不是表示目录,则返回nullpublic boolean mkdir()/mkdirs() 创建一

41、个目录public boolean renameTo(File dest)public boolean setReadOnly()目录管理38第38页,共83页。目录管理方法举例目录管理import java.io.File;public class DirList public static void main(String args) File path = new File(.);String list = path.list();for(int i = 0; i list.length; i+)System.out.println(listi);39第39页,共83页。目录管理方法举例

42、目录管理import java.io.File;import java.io.FilenameFilter;public class DirList public static void main(String args) File path = new File(.);String list = path.list(new DirFilter(args0); for (int i = 0; i list.length; i+) System.out.println(listi);class DirFilter implements FilenameFilter String key; Dir

43、Filter(String key) this.key = key; public boolean accept(File dir, String name) String f = new File(name).getName();return f.indexOf(key) != -1; java.util.FilenameFilter 接口 public boolean accept(File dir, String name); /是否指定的文件应包含在文件列表中public String getName() in java.io.File/获得文件或目录名,仅仅是最后的部分40第40页,

44、共83页。随机访问文件(Random Access File)java.io.RandomAccessFile类读写操作在同一个类中完成,须在构造对象时指定参数通过移动文件指针(file pointer)在文件的指定位置进行读写操作构造方法public RandomAccessFile(String name, String mode) throws FileNotFoundExceptionpublic RandomAccessFile(File file, String mode) throws FileNotFoundExceptionmode: “r”, “rw”随机访问文件41第41

45、页,共83页。方法public void seek(long pos) public int read()public int read(byte b)public int read(byte b, int off, int len)public final boolean readBoolean()/readByte()/readChar()/readShort()/readInt()/readDouble()/readFloat()public final String readLine()public void write(int b)public void write(byte b)p

46、ublic void write(byte b, int off, int len)public final void writeBoolean()/writeByte()/writeChar()/writeShort()/writeInt()/writeDouble()/writeFloat()随机访问文件42第42页,共83页。随机访问文件(Random Access File)-实例随机访问文件RandomAccessFile rf = new RandomAccessFile(rtest.dat, rw);for(int i = 0; i 10; i+)rf.writeDouble(i

47、*1.414);rf.close();rf = new RandomAccessFile(rtest.dat, rw);rf.seek(5*8);rf.writeDouble(47.0001);rf.close();rf = new RandomAccessFile(rtest.dat, r);for(int i = 0; i 10; i+)System.out.println(Value + i + : + rf.readDouble();rf.close();运行结果:Value 0: 0.0Value 1: 1.414Value 2: 2.828Value 3: 4.242Value 4

48、: 5.656Value 5: 47.0001Value 6: 8.484Value 7: 9.898Value 8: 11.312Value 9: 12.72599999999999943第43页,共83页。文件的特性读和写的权限文件长度修改时间是否是目录java.io.File类设定文件属性查询文件属性文件属性44第44页,共83页。文件属性获取文件路径import java.io.*;class AttrDemo1 public static void main(String args) throws IOException File testfile = new File(. + Fi

49、le.separatorChar + testfile1); testfile.createNewFile(); System.out.println(name = + testfile.getName(); System.out.println(path = + testfile.getPath(); System.out.println(absolute path = + testfile.getAbsolutePath(); System.out.println(canonical path = + testfile.getCanonicalPath(); 45第45页,共83页。文件属

50、性获取文件修改时间import java.io.*; import java.util.*;public class AttrDemo2 public static void main(String args) throws IOException File testfile = new File(testfile2); testfile.delete(); testfile.createNewFile(); long modtime = testfile.lastModified(); System.out.println(last modification time #1 = + new

51、Date(modtime); testfile.setLastModified(0); modtime = testfile.lastModified(); System.out.println(last modification time #2 = + new Date(modtime);46第46页,共83页。文件属性获取和设定文件长度import java.io.*;public class AttrDemo3 public static void main(String args) throws IOException File testfile = new File(testfile

52、3); testfile.delete(); testfile.createNewFile(); System.out.println(length #1 = +testfile.length(); RandomAccessFile raf = new RandomAccessFile(testfile3, rw); raf.setLength(100); raf.close(); System.out.println(length #2 = + testfile.length(); 47第47页,共83页。文件属性设置读写权限import java.io.*;public class Att

53、rDemo4 public static void main(String args) throws IOException File testfile = new File(testfile4); testfile.delete(); testfile.createNewFile(); if (testfile.canRead() System.out.println(file can be read #1); if (testfile.canWrite() System.out.println(file can be written #1); testfile.setReadOnly();

54、 if (testfile.canRead() System.out.println(file can be read #2); if (testfile.canWrite() System.out.println( file can be written #2); 48第48页,共83页。第九章 结束 !49第49页,共83页。概述URL应用Socket应用UDP数据报第十章 Java网络编程50第50页,共83页。概述The Java platform is highly regarded in part because of its suitability for writing pro

55、grams that use and interact with the resources on the Internet and the World Wide Web. 51第51页,共83页。概述AppletApplet程序嵌在HTML文件中,通过网络下载Applet程序代码,在本地Java-enabled browser 中执行HTTP通过URL类获取服务器端的HTML文件Socket(套接字)实现Client/Server结构的应用JDBC (Java Database Connectivity)通过网络访问关系型数据库Oracle, MS SQL, SybaseServlet/JS

56、P (Java Server Page)WEB服务器端的动态编程52第52页,共83页。概述网络基础-TCP/IP协议簇网络层(Network Layer)Internet Protocol (IP), IP地址, 32比特传输层(Transport Layer)传输控制协议(TCP: Transport Control Protocol)用户数据报协议(UDP: User Datagram Protocol)端口(Port, 16比特, 065535)应用层(Application Layer)HTTP, FTP, SMTP, POP3, Telnet, DNS TCP or UDPPort

57、应用PortPortPortPort数据1应用应用应用Port数据2主机53第53页,共83页。概述Java语言中基本网络类Package .URL.URLConnection.Socket.ServerSocket.DatagramPacket.DatagramSocket.MulticastSocket54第54页,共83页。概述URL应用Socket应用UDP数据报第十章 Java网络编程55第55页,共83页。URL应用什么是URL?统一资源定位符(Uniform Resource Locator)a reference (an address, a pointer) to a res

58、ource on the Internet.http:/协议标识符资源名 (主机名, 端口号, 文件名)http/index.html:/ftp/pub/:/56第56页,共83页。URL应用.URL类构造方法public URL(String spec) throws MalformedURLExceptionpublic URL(String protocol, String host, String file) throws MalformedURLExceptionpublic URL(String protocol, String host, int port, String fil

59、e) throws MalformedURLException 实例方法public final InputStream openStream() throws IOExceptionOpens a connection to this URL and returns an InputStream for reading from that connectionpublic URLConnection openConnection() throws IOExceptionReturns a URLConnection object that represents a connection to

60、 the remote object referred to by the URL 57第57页,共83页。URL应用.URL类-示例“/”new URL();/academic/index.htmlnew URL(/academic/index.html);new URL(http, , /academic/index.html);new URL(http, , 80, “/academic/index.html);58第58页,共83页。URL应用实例import .*;import java.io.*;public class URLReader public static void m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论