第八章输入与输出.ppt

上传人:本田雅阁 文档编号:3164900 上传时间:2019-07-18 格式:PPT 页数:50 大小:545.03KB
返回 下载 相关 举报
第八章输入与输出.ppt_第1页
第1页 / 共50页
第八章输入与输出.ppt_第2页
第2页 / 共50页
第八章输入与输出.ppt_第3页
第3页 / 共50页
第八章输入与输出.ppt_第4页
第4页 / 共50页
第八章输入与输出.ppt_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《第八章输入与输出.ppt》由会员分享,可在线阅读,更多相关《第八章输入与输出.ppt(50页珍藏版)》请在三一文库上搜索。

1、第八章 输入与输出,概念 Java I/O类 Java I/O操作 标准输入/输出 文件读写操作 目录管理 随机访问文件,概念,数据流:一组有顺序的有起点和终点的字节集合。 以流(stream)的方式对数据进行操作,I/O来源 控制台(console)打印/读入 文件(file)读/写 网络接口(TCP/UDP端口)读/写,概念,读/写流的一般流程 读(Reading) open a stream /打开读出流 while more information /判断 read information /读 close the stream /关闭流 写(Writing) open a strea

2、m /打开写入流 while more information /判断 write information /写 close the stream /关闭流,概念,两种流的定义(读取信息的基本数据单位) 字节流(byte stream): 一个字节(8-bit)一个字节读/写 字符流(character stream):一个字符一个字符读/写 eg “ j a v a 语 言” 以字节流的方式读: 读8次,8个字节 以字符流的方式读: 读6次,6个字符,Java I/O类,字节流的读/写操作(来自JDK1.0) java.io.InputStream (抽象类) public abstract

3、 int read() public int read(byte b) public int read(byte b, int offset, int length) 到达流的终点,无数据读出则返回-1 java.io.OutputStream (抽象类) public abstract void write(int b) public void write(byte b) public void write(byte b, int offset, int length) 所有的读/写函数都抛出java.io.IOException,Java I/O类,字符流的读/写操作(来自JDK1.1)

4、java.io.Reader (抽象类) public int read() public int read(char cbuf) publc abstract int read(char cbuf, int offset, int length) 到达流的终点,无数据读出则返回-1 java.io.Writer (抽象类) public void write(int c) public void write(char cbuf) public void write(char cbuf, int offset, int length) 所有的读/写函数都抛出java.io.IOExceptio

5、n,Java I/O类,I/O流的层次关系 class java.io.InputStream的子类 class java.io.ByteArrayInputStream class java.io.FileInputStream class java.io.FilterInputStream class java.io.BufferedInputStream class java.io.DataInputStream class java.io.LineNumberInputStream class java.io.PushbackInputStream class java.io.Obje

6、ctInputStream class java.io.PipedInputStream class java.io.SequenceInputStream class java.io.StringBufferInputStream ,Java I/O类,I/O流的层次关系 class java.io.OutputStream的子类 class java.io.ByteArrayOutputStream class java.io.FileOutputStream class java.io.FilterOutputStream class java.io.BufferedOutputStre

7、am class java.io.DataOutputStream class java.io.PrintStream class java.io.ObjectOutputStream class java.io.PipedOutputStream ,Java I/O类,I/O流的层次关系 class java.io.Reader的子类 class java.io.BufferedReader class java.io.LineNumberReader class java.io.CharArrayReader class java.io.FilterReader class java.io

8、.PushbackReader class java.io.InputStreamReader class java.io.FileReader class java.io.PipedReader class java.io.StringReader ,Java I/O类,I/O流的层次关系 class java.io.Writer的子类 class java.io.BufferedWriter class java.io.CharArrayWriter class java.io.FilterWriter class java.io.OutputStreamWriter class java

9、.io.FileWriter class java.io.PipedWriter class java.io.PrintWriter class java.io.StringWriter ,Java I/O类,I/O流的分类 (12个功能类),Java I/O类,I/O流的分类 (12个功能类),Java I/O类,I/O流的分类 (12个功能类),标准输入/输出,System.in System.out System.err 1 System.in.read() 2 print(参数), println(参数),class Test public static void main(Strin

10、g args) System.out.println(“Hello World!”); 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 Test A Received number=3 C:,【示例8-1】IOExample.Java,import Java.io.IOExcept

11、ion; class IOExample public static void main(String args) throws IOException char a; System.out.print(“Please input a char: “); a=(char)System.in.read(); System.out.println(“The char is: “+a); ,程序运行结果: Please input a char: (键入任意一个字符(C),回车) 输出: The number is: C,8.3 常用的流类,文件管理File类,File类包含许多用于执行文件常规操作

12、的方法。可以访问指定文件的所有属性,还可以删除,创建,更名指定的文件或目录。 java.io.File类: 文件和目录的路径名 路径名(pathname) UNIX平台上绝对路径的前缀“/”,相对路径无前缀,例“/etc/inetd.conf”、“inetd.conf” Windows平台,绝对路径名的前缀由“盘符:”组成,或共享名前缀“”,然后是主机名和共享名,相对路径名无盘符,例“c:windowsnotepad.exe”、“192.168.1.10Test.java” 构造方法 public File(String pathname) public File(String parent,

13、 String child) public File(File parent, String child) parent通常表示一个目录, child则表示一个目录或文件,文件管理File类,常用方法 public String getAbsolutePath() public boolean canWrite()/canRead() public boolean renameTo(File dest) public boolean delete() public boolean exists() public String getName() public String getParent(

14、) public boolean isDirectory() public boolean isFile() public String list() public String list(FilenameFilter filter) public boolean mkdir() public URL toURL(),文件管理File类,方法举例,import java.io.File; public class DirList public static void main(String args) File path = new File(“.“); String list = path.

15、list(); for(int i = 0; i list.length; i+) System.out.println(listi); ,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.p

16、rintln(listi); ,class DirFilter implements FilenameFilter String key; DirFilter(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); /是否指定的

17、文件应包含在文件列表中,public String getName() in java.io.File /获得文件或目录名,文件读写操作,文件读/写流程 打开文件流 条件判断 读出/写入 关闭文件流 两种类型文件 FileInputStream/FileOutputStream (字节流) FileReader/FileWriter (字符流),字节流构造方法 public FileInputStream(String name) throws FileNotFoundException public FileInputStream(File file) throws FileNotFound

18、Exception public FileOutputStream(File file) throws FileNotFoundException public FileOutputStream(File file, boolean append) throws FileNotFoundException /是否向已存在的文件后添加 public FileOutputStream(String name) throws FileNotFoundException public FileOutputStream(String name, boolean append) throws FileNo

19、tFoundException,文件读写操作,文件读写操作,2.字节流方法 public int read()throws IOException public int read(byte b)throws IOException public int read(byte b,int offset,int len)throws IOException public void close()throws IOException public void write(int b) throws IOException public void write (byte b)throws IOExcept

20、ion public void write (byte b,int offset,int len) throws IOException,典型的读文件程序 import java.io.IOException; import java.io.FileInputStream; public class FileInputDemo public static void main(String args )throws IOException FileInputStream file=new FileInputStream(args 0) ; int c; while(c=file.read()!=

21、-1) System.out.print(char)c); file.close(); ,import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class CopyBytesDemo1 public static void main(String args) throws IOException File inputFile = new File(args0); File outputFile = new F

22、ile(args1); FileInputStream in = new FileInputStream(inputFile); FileOutputStream out = new FileOutputStream(outputFile); int c; while (c = in.read() != -1) out.write(c); in.close(); out.close(); ,import java.io.*; public class c8_7 public static void main(String args) char c; int c1; File filePath=

23、new File(“temp“); if(!filePath.exists() filePath.mkdir(); File fl=new File(filePath,“d1.txt“); try FileOutputStream fout=new FileOutputStream(fl); System.out.println(“请输入字符,输入结束按#:“); while(c=(char)System.in.read()!=#) fout.write(c); fout.close(); System.out.println(“n打印从磁盘读入的数据“);,FileInputStream f

24、in=new FileInputStream(fl); while(c1=fin.read()!=-1) System.out.print(char)c1); fin.close(); catch(FileNotFoundException e) System.err.println(e); catch(IOException e) System.err.println(e); ,运行结果如下: 请输入字符,输入结束按 abcd# 打印从磁盘读入的数据 abcd#,【示例8-2】FileOutputDemo.Java,import java.io.File; import java.io.Fi

25、leInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class FileOutputDemo public static void main(String args) throws IOException File fileSource = new File(“output.txt“); File fileTarget = new File(“intput.txt“); FileOutputStream t

26、arget = new FileOutputStream(fileTarget); FileInputStream source = new FileInputStream(fileSource); int c; while (c=source.read()!= -1) target.write(c); target.close(); source.close(); ,文件读写操作,字符流构造方法 public FileReader(File file) throws FileNotFoundException public FileReader(String fileName) throws

27、 FileNotFoundException public File(String pathname) public FileWriter(File file) throws IOException public FileWriter(File file, boolean append) throws IOException public FileWriter(String fileName) throws IOException public FileWriter(String fileName, boolean append) throws IOException,import java.

28、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)

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

30、hrows IOException public void write (char cbuf) throws IOException public void write (char cbuf, int off, int len) throws IOException,DataInputStream和DataOutputStream,概述 java.io.DataInputStream类 public DataInputStream(InputStream in) public final boolean readBoolean() public final byte readByte() pu

31、blic final char readChar() public final int readInt() java.io.DataOutputStream类 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),DataOutputStream out = new DataO

32、utputStream(new FileOutputStream(“invoice1.txt“); double prices = 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(

33、n); out.close();,19.99 12 Java T-shirt 9.99 8 Java Mug,DataInputStream in = new DataInputStream( new 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(2

34、0); while (chr = in.readChar()!= n) desc.append(chr); System.out.println(“Youve ordered “ + unit + “ units of “ + desc + “ at $“ + price); total = total + unit * price; catch (EOFException e) System.out.println(“For a TOTAL of: $“ + total); in.close();,用于跟踪中间流的类PushbackInputStream,构造方法: PushbackInpu

35、tStream(InputStream in) PushbackInputStream(InputStream in, int size) 代表方法: Void unread(int n) 回退一个字节,BufferedInputStream/BufferedOutputStream,构造方法 public BufferedInputStream(InputStream in) 2048 bytes public BufferedInputStream(InputStream in, int size) public BufferedOutputStream(OutputStream out)

36、 512 bytes public BufferedOutputStream(OutputStream out, int size) public BufferedReader(Reader in) 8192 bytes public BufferedReader(Reader in, int sz) public BufferedWriter(Writer out) 8192 byte public BufferedWriter(Writer out, int sz),String filename = “test.txt”; FileInputStream fis = new FileIn

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

38、 = bis.read() != -1) if (c = A) count+; fis.close(); System.out.println(count);,BufferedInputStream/BufferedOutputStream,数据的读写,随机访问文件,随机访问文件(Random Access File) java.io.RandomAccessFile类 读写操作在同一个类中完成,须在构造对象时指定参数 通过移动文件指针(file pointer)在文件的指定位置进行读写操作 构造方法 public RandomAccessFile(String name, String mo

39、de) throws FileNotFoundException public RandomAccessFile(File file, String mode) throws FileNotFoundException mode: “r”, “rw”,随机访问文件,方法 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()/r

40、eadDouble()/readFloat() public final String readLine() public void write(int b) public void write(byte b) public void write(byte b, int off, int len) public final void writeBoolean()/writeByte()/writeChar()/writeShort()/writeInt()/writeDouble()/writeFloat(),随机访问文件,方法 public void seek(long pos) throw

41、s IOException public int skipBytes(int n) throws IOException public long getFilePointer() throws IOException public long length() throws IOException void setLength(long newLength),import java.io.RandomAccessFile; import java.io.IOException; import java.io.FileNotFoundException; public class RAFDemo

42、public static void main(String args) try RandomAccessFile rf = new RandomAccessFile(“test.dat“, “rw“); for(int i = 0; i 10; i+) rf.writeDouble(i*1.48); rf.close(); rf = new RandomAccessFile(“test.dat“, “rw“); rf.seek(5*8); rf.writeDouble(47.0001); rf.close(); rf = new RandomAccessFile(“test.dat“, “r

43、“); for(int i = 0; i 10; i+) System.out.println(“Value “ + i + “: “ + rf.readDouble(); rf.close(); catch(FileNotFoundException e) System.out.println(e); catch(IOException e) System.out.println(e);,管道类,在两个线程间建立数据流的通道 PipedInputStream类创建输入管道 PipedOutputStream类创建输出管道 管道类的模型,两个继承体系之间的类的对应关系,Filter两个继承体系

44、之间类的对应关系,FileReader和FileWriter,FileReader构造方法 public FileReader(String fileName) throws FileNotFoundException public FileReader(File file) throws FileNotFoundException FileWriter构造方法 public FileWriter(File file) throws IOException public FileWriter(File file, boolean append) throws IOException publi

45、c FileWriter(String fileName) throws IOException public FileWriter(String fileName, boolean append) throws IOException,import java.io.*; public class CopyCharDemo public static void main(String args) throws IOException File inputFile = new File(args0); File outputFile = new File(args1); FileReader i

46、n = new FileReader(inputFile); FileWriter out = new FileWriter(outputFile); int c; while (c = in.read() != -1) out.write(c); in.close(); out.close(); ,字节流向字符流的转化,InputStreamReader的构造函数 public InputStreamReader(InputStream in) public InputStreamReader(InputStream in, String charsetName) throws Unsupp

47、ortedEncodingException public InputStreamReader(InputStream in,Charset cs) public InputStreamReader(InputStream in, CharsetDecoder dec),字节流向字符流的转化,OutputStreamWriter的构造函数 public OutputStreamWriter(OutputStream out) public OutputStreamWriter(OutputStream out, String charsetName) throws UnsupportedEncodingException public OutputStreamWriter(OutputStream out,Charset cs) public OutputStreamWriter(OutputStream out, CharsetEncoder enc),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1