1、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:javasrc);File(String paren
2、t,String child)File f3=new File(d:javasrc,a.java)File(File dir,String name)File f4=new File(f2,“Hello.java);Windows Others /路径分隔符File.separatorFile类方法:属性判断是文件还是目录public boolean isFile();public boolean isDirectory();判断目标是否存在 public boolean exists()获取文件长度 public long length()获取文件读写属性 public boolean ca
3、nRead()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()例子FileDem
4、o2 输入与输出流字节输入流字节输入流操作单元是字节InputStream是所有表示输入字节流类的父类(抽象类)方法:int read()从输入流中读一个字节。int read(byte b)从输入流中读若干个字节到数组中。long skip(long n)跳过n个字节。void reset()回到最近一次做的标记处。void close()关闭输入流,释放与此输入流相连的系统资源。字节输入流的子类通过子类的构造方法参数指定其数据源。ByteArrayInputStream:byte数组FileInputStream:文件ObjectInputStream:对象PipedInputStream
5、:管道FilterInputStream:定义了对流的进一步处理BufferedInputStream(InputStream in):缓冲流DataInputStream(InputStream in)数据读入字节输入流例子代码byte b=new byte8;FileInputStream in=new FileInputStream(Hello.txt);int n=in.read(b);in.close();字节输出流OutputStream:是抽象类,是所有表示输出字节流类的父类。功能:接受要输出的字节并将它送往目的地。方法:write(int b)往输出流写一个字节 write(b
6、yte b)往输出流注入字节数据。close()关闭输出流,释放与之相连的系统资源。目的地ByteArrayOutputStream:byte数组FileOutputStream:文件ObjectOutputStream:对象PipedOutputStream:管道FilterOutputStream:定义了对流的进一步处理BufferedOutputStream:缓冲流DataOutputStream 数据读入字节输出流的子类字节输出流例子代码byte b=Welcome,欢迎.getBytes();FileOutputStream outs=new FileOutputStream(Hel
7、lo.txt);outs.write(b);outs.close();System类及标准输入输出System.out.println(Hello Java!);static PrintStream out 标准输出流 static PrintStream err 标准错误输出流 static InputStream in 标准输入流PrintStream是OutputStream的子类字符输入流ReaderReader:读取字符流的抽象类(Unicode字符操作)方法:int read()读取一个字符 int read(char cbuf)读取一串字符(到字符数组)long skip(lon
8、g n)跳过n个字符 reset()将读取位置恢复到标记处 close()关闭字符流Reader子类Reader有多个子类:CharArrayReader(char buf)PipedReader(PipedWriter)StringReader(String s)BufferedReader(Reader in)提供逐行读入方法:readLine字符输出流WriterWriter抽象类:是所有表示输出字符流类的父类。功能:接受要输出的字符并将它送往目的地。方法:write(String str)write(char cbuf)flush()close()Writer类的子类字节流字符流写字符
9、OutputStreamWriter(OutputStream out)FileWriter(File对象或文件名)Writer有多个子类CharArrayWriterStringWriter PipedWriterBufferedWriterPrintWriter字符输出流例子代码char b=Welcome,欢迎.toCharArray();FileWriter fw=new FileWriter(Hello.txt);fw.write(b);fw.close();3 缓冲流缓冲流BufferedReader 的构造方法 BufferedReader(Reader in)BufferedR
10、eader(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);Buffere
11、dReader br=new BufferedReader(fr);String line=br.readLine();fr.close();br.close();4 小结File类FilegetName()delete()length()isFile()File类操作文件属性,不涉及文件内容字节操作InputSreamFileInputStreamread();/byteByteArrayInputSreamread();/byteDataInputStreamObjectInputStreamreadObject();/objectOutputStreamwrite();/bytewriteObject();/ObjectFile fileString filenamebyte bufInputStream inInputStream inReaderFileReaderread();/charBufferedReaderread();/charreadLine();/lineStringReaderread();/charWriterwrite();/bytewriteObject();/Object字符操作File fileString filenameReader inString s