导入包:java.io 超类:java.io.File —— 文件和目录路径名的抽象表示形式 Java会把计算机中的文件和文件夹(目录)封装成File类,该类包括文件属性(路径、名称、大小创建时间等等)和行为(读、写、改、删等等)。
注意:不同的操作系统文件和目录的格式存在差异。
文件名称分隔符路径分隔符Windows\;Linus/:所以,基于这一点,为了兼容性更好,不能把路径写死:
"c:"+File.separator+"abc"+File.separator+"a.txt"(注意:调用构造函数创建File对象并非创建文件和目录,只是指明路径,无论该路径下是否存在文件或者目录,都不影响File对象的创建。 )
public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。(遍历获取)
public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录。(创建)
public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。public boolean mkdir() :创建由此File表示的目录。public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。(直接用这个方便)(删除)
public boolean delete() :删除由此File表示的文件或目录。以上API需要注意的:
length(),表示文件的长度。但是File对象表示目录,则返回值未指定。当且仅当具有该名称的文件尚不存在时,创建一个新的空文件,否则因重复而报错。delete方法,前提是文件或目录存在,如果此File表示目录,则目录必须为空才能删除。调用listFiles方法的File对象,表示的必须是实际存在的目录,否则返回null,无法进行遍历。“流” 是数据处理的一种抽象,是指一组有序的数据序列
根据数据处理基本单位的不同,分为字节流、字符流。
根据数据传输方向的不同,分为输入流、输出流。(站在内存即应用程序的角度来区分输入输出流,站在程序员即内存即应用程序的角度来区分读取写入。)
(抽象)超类:InputStream、OutputStream
文件字节流:FileInputStream、FileOutputStream
方法: read()、read(byte[] b):一次读取一个字节 available():返回从流中读取的字节数 write()、write(byte[] b):写入
(抽象)超类:Reader、Writer
文件字符流:FileReader、FileWriter
方法: read()、read(char[] b):一次读取一个字符 write()、write(char[] b):写入
》》两者互相转换:InputStreamReader、OutputStreamWriter
经典例子:
获取socket连接上的字节型输入流 InputStream socketByteIN = s.getInputStream(); 将字节输入流-->字符输入流 InputStreamReader irCharIN = new InputStreamReader(socketByteIN); 将字符输入流-->字符缓冲流 BufferedReader in = new BufferedReader(irCharIN); //以上简写三流转换: BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));