
类与输入输出流.ppt
29页Java程序设计,第八章 File类与输入输出流,目录,文件类File 输入输出流 缓冲流,,1 File类,File类,File类的对象是文件系统中的一个目录或文件的抽象表示 File类对象描述目录或文件的名字、长度、可否读写等属性,可用来重命名文件、查询文件属性等,但不能读写文件里的内容 通过File类对象可跨平台统一管理文件File类构造方法,File(String path) 文件(相对路径),移植性较好 File f1 = new File(“src/Hello.java“); 目录(绝对路径) File f2 = new File(“d:\\java\\src“); File(String parent, String child ) File f3 = new File(“d:\\java\\src“, “a.java“) File(File dir, String name) File f4 = new File(f2, “Hello.java“);,Windows \\ Others /,路径分隔符 File.separator,File类方法:属性,判断是文件还是目录 public boolean isFile(); public boolean isDirectory(); 判断目标是否存在 public boolean exists() 获取文件长度 public long length() 获取文件读写属性 public boolean canRead() public boolean canWrite(),File类方法:属性,获取文件名称或整个路径 public String getName() 仅返回文件名 public String getPath() 返回整个路径字符串 列出目录中的文件 public String[] list(),File类方法:操作,重命名 public boolean renameTo(File new); 删除文件或目录 public boolean delete(); 创建目录 public boolean mkdir(); 创建目录及父目录(如果需要的话) public boolean mkdirs(),例子FileDemo,,2 输入与输出流,字节输入流,字节输入流操作单元是字节 InputStream是所有表示输入字节流类的父类(抽象类) 方法: int read() 从输入流中读一个字节。
int read(byte[] b)从输入流中读若干个字节到数组中 long skip(long n) 跳过n个字节 void reset() 回到最近一次做的标记处 void close() 关闭输入流,释放与此输入流相连的系统资源字节输入流的子类,通过子类的构造方法参数指定其数据源 ByteArrayInputStream:byte数组 FileInputStream:文件 ObjectInputStream:对象 PipedInputStream :管道 FilterInputStream:定义了对流的进一步处理 BufferedInputStream (InputStream in) :缓冲流 DataInputStream(InputStream in) 数据读入,字节输入流,例子代码 byte[] b = new byte[8]; FileInputStream in = new FileInputStream(“Hello.txt“); int n = in.read(b); in.close();,,字节输出流,OutputStream:是抽象类,是所有表示输出字节流类的父类。
功能:接受要输出的字节并将它送往目的地 方法: write(int b) 往输出流写一个字节 write(byte[] b) 往输出流注入字节数据 close() 关闭输出流,释放与之相连的系统资源目 的 地,,ByteArrayOutputStream:byte数组 FileOutputStream:文件 ObjectOutputStream:对象 PipedOutputStream :管道 FilterOutputStream:定义了对流的进一步处理 BufferedOutputStream :缓冲流 DataOutputStream 数据读入,字节输出流的子类,字节输出流,例子代码 byte b[]=“Welcome,欢迎“.getBytes(); FileOutputStream outs = new FileOutputStream(“Hello.txt“); outs.write(b); outs.close();,System类及标准输入输出,System.out.println(“Hello Java!“); static PrintStream out 标准输出流 static PrintStream err 标准错误输出流 static InputStream in 标准输入流 PrintStream是OutputStream的子类,字符输入流Reader,Reader:读取字符流的抽象类(Unicode字符操作) 方法: int read() 读取一个字符 int read(char[] cbuf) 读取一串字符(到字符数组) long skip(long n) 跳过n个字符 reset() 将读取位置恢复到标记处 close() 关闭字符流,Reader子类,Reader有多个子类: CharArrayReader(char[ ] buf) PipedReader(PipedWriter) StringReader(String s) BufferedReader(Reader in) 提供逐行读入方法:readLine,字符输出流Writer,Writer抽象类:是所有表示输出字符流类的父类。
功能:接受要输出的字符并将它送往目的地 方法: write(String str) write(char[] cbuf) flush() close(),Writer类的子类,Writer有多个子类 CharArrayWriter StringWriter PipedWriter BufferedWriter PrintWriter,字符输出流,例子代码 char b[]=“Welcome,欢迎“.toCharArray(); FileWriter fw = new FileWriter(“Hello.txt“); fw.write(b); fw.close();,,3 缓冲流,缓冲流,BufferedReader 的构造方法 BufferedReader(Reader in) BufferedReader(Reader in, int sz),缓冲流,BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in) ); InputStreamReader 没有readLine() 方法 BufferedReader方法: int read() 读一个字符 String readLine() 读一行 read(char[] cbuf, int off, int len) 将指定数量(len)字符读到字符数组中的指定位置(off),缓冲流,例子代码 FileReader fr = new FileReader(“readme.txt“); BufferedReader br = new BufferedReader(fr); String line= br.readLine(); fr.close(); br.close();,,4 小结,File类,File类操作文件属性,不涉及文件内容,字节操作,File file String filename,byte [] buf,InputStream in,InputStream in,字符操作,File file String filename,Reader in,String s,。












