ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
java基础——io流: 基本概念: 文 件:文件是数据源(保存数据的地方)的一种,像我们经常使用的word,txt,java都是文件,文件最主要的作用就是保存数据,它可以保存文字、图片或声音、视频等 文件流:文件在程序中是以流的形式操作的 ![](https://box.kancloud.cn/24824a3435b157e89f3b20626ae9e705_361x165.png) 输入输出流转换图 输入流:数据从 数据源(文件) 到 程序(内存) 之间的路径 输出流:数据从 程序(内存) 到 数据源(文件) 之间的路径 输入输出是针对内存来说的 io流包括字符流和字节流 字符流针对文字相关的 包括Reader(读入,输入流)和Writer(写出,输出流) 字节流(stream) 1.FileWriter (1)创建一个FileWriter FileWriter fw=new FileWriter("d:\\aa.txt");文件路径 FileWriter fw=new FileWriter("d:\\aa.txt",true); 允许追加写出 1-写出一个字符串:fw.write("hello world") 换行+\r\n fw.flush();刷新 fw.close();关闭 2-可写出char数组,可选择输出off偏移量,len长度 char c={'中',‘国’,‘节’,‘真’,‘好’,‘玩’}; fw.write(c,3,3) 3-输出对应的ASCII码 要输出整数97 fw.write("97") 或char c={‘9’,‘7’}; 2.FileReader FileReader fr=new FileReader("d:\\aa.txt");文件路径 char c[]=new char[512]; int tem=0; while((tem=fr.read(c)!=-1)){ String ss=new String(c,0,tem) System.out.println(ss); } 读一次写一次: 方法一:/*FileReader fr=new FileReader("d:\\aa.txt"); FileWriter fw=new FileWriter("e:\\bb.txt"); char c[]=new char[512]; int tem=0; while((tem=fr.read(c))!=-1){ fw.write(c,0,tem); } fw.flush(); fw.close(); fr.close();*/ 方法二:拷贝文本文件 FileReader fr=new FileReader("e://a.txt"); BufferedReader br=new BufferedReader(fr); FileWriter fw=new FileWriter("d://aa.txt"); BufferedWriter bw=new BufferedWriter(fw); String ss=null; while((ss=br.readLine())!=null){ bw.write(ss); bw.newLine();//换行 } bw.flush(); bw.close(); br.close(); 3.字符缓冲流 字符缓冲区作用:对字符流进行再次封装,使之读写效率提高 把集合中的数据写到文本文件: FileWriter fw=new FileWriter("d:\\aa.txt"); BufferedWriter bw=new BufferedWriter(fw); bw.write("hello world"); bw.newLine();//换行 bw.write("hello world"); bw.flush(); bw.close();*/ 把文本文件中的数据读取到控制台 FileReader fr=new FileReader("d:\\aa.txt"); BufferedReader br=new BufferedReader(fr); String ss=""; while((ss=br.readLine())!=null){ System.out.println(ss); } br.close(); } 补充:File静态成员变量 与系统有关的路径分隔符 String separator=File.pathSeparator; System.out.println(separator); 是一个分号,目录的分割 Linux是: 与系统有关的默认名称分隔符 separator=File.separator; System.out.println(separator);向右\目录名称分割 Linux是:/ File类的构造方法 三种重载形式 1、File(String pathname)传递路径名 可以写到文件夹和文件 路径 绝对路径 在系统中具有唯一性 c://windows//system.32 http://www.baidu.com 相对路径:表示的是路径之间的相对关系 父目录是唯一性 子目录是可以多个 才c://abc c://abc//jpg c://abc//demo.java 2、File(String Parent,String child) 传递路径,传递字符串父路径 ,字符串子路径 File file1=new File("c:","aa"); System.out.println(file1);输出结果 c://aa 好处:单独操作父路径和子路径 3、File(File parent,String child) 传递路径,传递File类型父路径,字符串子路径 File parent =new File("d:"); File file2=new File(parent,"aa"); System.out.println(file2);输出结果 c://aa 好处:父路径是File类型,父路径可以直接调用File类方法 File创建文件的功能: File file=new File("f://aa.txt"); boolean b=file.createNewFile(); System.out.println(b); 文件如果已经存在就不再创建 File创建文件夹的功能: File file1=new File("f://aa"); boolean c=file1.mkdir(); System.out.println(c);文件夹如果已经存在就不再创建 mkdis();创建多层次文件夹 建议用mkdis()来创建文件夹 File类的删除功能 boolean delete()删除的文件或者文件夹,在File构造方法中给出,删除成功返回true,删除失败返回false File file=new File(“c://abc”); boolean b=file.delete(); system.out.println(b); 删除方法不走回收站,直接从硬盘中删除 File获取功能 String getName() 返回路径中表示的文件或者文件夹名 获取路径中最后部分的名字 long length()返回路径中表示的文件的字节数,注意不是文件夹 File file=new File("D:\\oa\\.metadata\\.log"); long length=file.length(); System.out.println(length); String getAbsolutePath()获取绝对路径;返回String对象 File getAbsoluteFile()获取绝对路径;返回File对象 File file=new File("D:\\oa\\.metadata\\.log"); String path=file.getAbsolutePath(); System.out.println(path); eclipse环境中,写的是一个相对路径,绝对位置是工程根目录 获取父路径:String getparent()返回String对象 File getParentFile()返回File对象 File parent=file.getParentFile().getParentFile().getParentFile();//输出null File判断功能: 1、boolean exist是() 判断File构造方法中封装路径是否存在,存在返回true,不存在返回false 2、boolean isDirectory()判断File构造方法中封装的路径 是不是文件夹 3、boolean isFile()判断File构造方法中封装的路径 是不是文件 4、list String[]list() 获取到File构造方法中封装的路径中的文件和文件夹名 (遍历一个目录)返回只有名字 5、File[] listFiles()获取到File构造方法中封装的路径中的文件和文件夹名 (遍历一个目录)返回File的是目录或者文件的全路径