第七讲 输入输出流(JAVA网络编程技术)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
java.io中的基本流类:
说明:它们是抽象类,不能直接创建对象。
17
InputStream 方法
The three basic read methods: int read() int read( byte[] buffer) int read( byte[] buffer, int offset, int length)
用于获得文件的名称,但不包含文件所在的路径 public String getPath() 用于获得文件的相对路径 public String getAbsolutePath() 返回文件绝对路径 public String getParent() 返回文件的上一级目录的名称 public boolean renameTo(File dest) 重命名文件

The other methods: void close() boolean ready() long skip( long n)

20
Writer 方法
The three basic write methods: void write( int c) void write( char[] cbuf) void write( char[] cbuf, int offset, int length) void write( String string) void write( String string, int offset, int length)
getFilePoint()返回当前文件指针位置。 length()返回文件的长度。 可用方法writeChar()、writeInt()、readChar()、 readInt等对文件进行各种类型的读写。

9
例:向文件test.txt末尾添加一个字符串“hi”。
import java.io.*; public class Rand { public static void main(String args[]) throws IOException { RandomAccessFile f; try{ f=new RandomAccessFile("test.txt","rw"); f.seek(f.length()); f.writeBytes("hi\r\n"); } catch(Exception e) { System.out.println("error"); } } }

The other methods: void close() void flush()

21
InputStream Class的继承关系
22
OutputStream Class的继承关系
23
Reader Class的继承关系
24
Writer Class的继承关系
25
数据流的使用
对输入/输出流类按用途分:
10
例:向文件写入字符串。
import java.io.*; public class Randw { public static void main(String args[]) throws IOException { RandomAccessFile f; try{ f=new RandomAccessFile("test.txt","rw"); f.writeBytes(“Xu Yingxiao\r\n"); f.writeBytes("1.28\r\n"); f.writeBytes("Liu Fang\r\n"); f.writeBytes("6.16\r\n"); } catch(Exception e){ } } }
7
文件随机读写

从文件的任意一个位置开始读写。
用RandomAccessFile类实现文件的随机读写。 一般的流中,文件指针只能顺序移动, RandomAccessFile可以任意移动文件指针。创建RandomAccessFile对象

seek(long pos)方法将文件指针移动到距离文件开 头pos个字节处。


29

import java.io.*; public class CharInput{ public static void main(String args[]) throws IOException { String s; InputStreamReader ir; BufferedReader in; ir=new InputStreamReader(System.in); in=new BufferedReader(ir); // in=new BufferedReader(new InputStreamReader(System.in)); while ((s=in.readLine())!=null) System.out.println(“Read: “+s); } 30 }
11
输入输出流



流概念 键盘输入和屏幕输出 处理流 基本文件输入输出 字节流和字符流 对象流 通过URL对象访问网页
12
流概念
数据源 程序 数据宿
“流”可以被理解为一条“管道”。这条“管道”有两个端 口:一端与数据源(当输入数据时)或数据宿(当输出数据时) 相连,另一端与程序相连。

The other methods: void close() void flush()

19
Reader方法
The three basic read methods: int read() int read( char[] cbuf) int read( char[] cbuf, int offset, int length)
File类
这三种方法只是生成一个文件对象,但是没有生成真正的 文件,如果要生成实在的文件,需调用createNewFile()方法。 如果在指定的路径中生成一个文件夹需调用mkdir()方法。 要将建一个文件或者目录,该文件或目录的上一级目录必 须事先就要存在。
4
File类
File类中提供的有关文件名处理的方法: public String getName()
6
File类中提供的有关文件操作方面的方法:
public boolean mkdir() 创建此抽象路径名指定的目录。 public boolean mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的 父目录。注意,此操作失败时也可能已经成功地创建了一部分 必需的父目录。 public boolean createNewFile() 根据当前的文件对象创建一个新的文件 public boolean delete() 删除当前文件 public String[] list() 列出当前目录下的所有文件和目录 public String[] list(FilenameFilter filter) 列出目录下的指定类型文件
Public int compareTo(File pathname)
按字母顺序比较两个抽象路径名
public native boolean isAbsolute()
如果文件名为绝对名则返回真
5
File类
File类中提供的有关文件属性测试方面的方法:
public boolean isFile() 用于测试当前文件对象是不是文件 public boolean isDirectory() 判断当然文件对象是否是目录

数据的发起与接收流 用于向诸如字符串、文件、管道等专用的数据 池读写数据。 处理流:处理流类在进行读写时要执行某种处 理,如缓冲、编码等

26
键盘输入和屏幕输出



Java中对应键盘输入的输入流为System.in, 对应屏幕输出的输出流为System.out 。 in 和 out 都 是 System 的 类 变 量 , in 的 类 型 为 InputStream类型,可以使用read()方法进行 读取。out的类型为PrintStream类型,经常使 用方法print()和println()。 System.in的read()方法一次只能读取一个字 符或按照byte类型的数组来读取。
15
Java用于输入输出流的类
按所读写的数据类型分两类:

字符流类(Character Streams) 字符流类用于
向字符流读写16位二进制字符。

字节流类(Byte Streams) 字节流类用于向字
节流读写8位二进制的字节。一般地,字节流类
主要用于读写诸如图象或声音等的二进制数据。
16
Java用于输入输出流的类
28
处理流

BufferedReader类的readLine()方法可以一次从 流中读取一行,构造器的参数为Reader类型。 类InputStreamReader是Reader的子类,构造器 参数为输入流。 为了输入字符串可以将System.in先传给处理流 InputStreamReader 后 再 传 给 处 理 流 BufferedReader。
public boolean exists() 判断文件是否存在 public boolean canWrite() 判断文件是否可写 public boolean canRead() 判断文件是否可读
public String setReaeOnly() 将当前文件对象设置为只读public long length() 用于获得当前文件的长度以字节为单位
第七讲

输入输出流
File类 文件随机读写 输入输出流 基本文件输入输出 对象流 通过URL对象访问网页
1
File类
File类是IO包中唯一代表磁盘文件本身信息的类, 而不是文件中的内容。 File类定义了一些与平台无关的方法来操纵文件, 例:创建、删除文件和重命名文件。 Java中的目录被当作一种特殊的文件使用,list方 法可以返回目录中的所有子目录和文件名。 在Unix下的路径分隔符为/,在DOS下的路径分隔 符为\,Java可以正确处理Unix和DOS的路径分隔符。
2
File类
File类的功能十分强大,它可以访问指定文件的所有属性, 包括文件名称、文件长度、文件的最后修改时间等,同时还可 以利用File类来建立文件对象、删除文件和改变文件名称等。 创建文件对象有三种构造方法,。 File类具有下面三种构造函数: File (String pathname); File (String pathname,String name); File (File dir,String name); 其中参数如下所示: String pathname---给定的文件对象的路径,可以使绝对 路径也可以是相对路径; String name---文件名; String dir---抽象路径名; 3
27

import java.io.*; class IOApp{ public static void main(String args[]) throws IOException { byte buffer[] =new byte[255]; System.out.println("enter: "); System.in.read(buffer,0,255); System.out.println("Got : "); String x=new String(buffer); System.out.println(x); } }

The other methods: void close() int available() long skip( long n)

18
OutputStream 方法
The three basic write methods: void write( int c) void write( byte[] buffer) void write( byte[] buffer, int offset, int length)
13
流概念
Java使用流的机制实现输入输出操作。 流:是一个数据序列。有两种流: 1. 输入流:通过打开一个到数据源(文件、内存或网
络端口上的数据)的输入流,程序可以从数据源上 顺序读取数据。
2. 输出流:通过打开一个到目标的输出流,程序可以
向外部目标顺序写数据。
14
读数据的逻辑为: open a stream while more information read information close the stream 写数据的逻辑为: open a stream while more information write information close the stream
相关文档
最新文档