一、IO:
1、java.io.File类的使用
2、IO原理及流的分类
3、文件流:
FileInputStream/FileOutputStream/FileReader/FileWriter
4、缓冲流:
BufferedInputStream/BufferedOutputStream/
BufferedReader/BufferedWriter
5、转换流:
InputStreamReader/OutputStreamWriter
6、标准输入/输出流
7、打印流:
PrintReader/PrintWriter
8、数据流:
DataInputStream/DataOutputStream
9、对象流——涉及序列化、反序列化
ObjectInputStream/ObjectOutputStream
10、随机存取文件流:
RandomAccessFile
二、File类:File能新建、删除、重命名文件和目录,但File不能访问文件内容本身。
如果需要访问文件内容本身,则需要使用输入/输出流。
1、访问文件名:
File file=new File("D:\\Test\\tt.txt"); //file就是tt.txt文件 //注:java中\\或者/表示文件的分隔符 File f2=new File("D:"+File.separator+"Test"+"\\tt.txt"); //也可以用该法表示 System.out.println(file.getName()); //获取文件名 System.out.println(file.getPath()); //获取当前文件或文件夹路径 File f3=new File("src/test2/TestIO.java"); //使用相对路径创建file对象 System.out.println(f3.getPath()); //获取文件或文件夹的相对路径,就是new File时写的路径 System.out.println(f3.getAbsolutePath()); //获取文件夹或文件的绝对路径 System.out.println(f3); System.out.println(f3.getAbsoluteFile()); //返回一个用当前文件的绝对路径构建的file对象 System.out.println(f3.getParent()); //返回当前文件或文件夹的父级路径 file.renameTo(new File("D:\\Test\\t.txt")); //给文件或文件夹重命名
2、文件检测:
File f4=new File("D:\\Test\\t.txt"); System.out.println(f4.exists()); //判断文件或者文件夹是否存在 System.out.println(f4.canRead()); //判断文件是否可读写 System.out.println(f4.canWrite()); System.out.println(f4.isFile()); //判断当前的file对象是不是文件 System.out.println(f4.isDirectory()); //判断当前的file对象是不是文件夹或者目录 System.out.println(f4.lastModified()); //获取文件的最后修改时间,返回的是一个毫秒数 System.out.println(f4.length()); //返回文件长度,单位是字节数
3、文件操作相关:
File f5=new File("D:\\Test\\t1.txt"); System.out.println(f5.exists()); if(!f5.exists()){ //判断文件是否存在 try{ f5.createNewFile(); //创建新的文件 System.out.println("新文件创建成功"); }catch(IOException e){ e.printStackTrace(); } } f5.delete(); //删除已有文件
4、目录操作相关:
//File f6=new File("D:\\Test\\tt"); File f6=new File("D:\\Test\\tt\\a\\b"); //f6.mkdir(); //创建单层目录 f6.mkdirs(); //创建多层目录
三、IO流体系
四、文件字节流
1、字节流输入:
/** * 文件字节输入流 */ public static void testFileInputStream(){ try{ FileInputStream fileIn=new FileInputStream("D:\\Test\\t1.txt"); byte []b=new byte[100]; //设置一个byte数组接收读取的文件内容 //该方法有一个返回值,返回值是读取的数据长度,如果读取到最后一个数据,还会向后再读一个 //也就意味着当in.read()的返回值是-1时,整个文件读取完毕 int len=0; //读取数据的长度 while((len=fileIn.read(b))!=-1){ System.out.println(new String(b,0,len)); //参数1是缓冲数据的数组 //参数2是从数组的哪个位置开始转化字符串 //参数3是总共转化的长度 } fileIn.close(); //注意:流在使用完毕后要关闭 } catch (Exception e){ e.printStackTrace(); } }
2、字节流输出:
/** * 文件字节输出流 */ public static void testFileOutputStream(){ try{ FileOutputStream fileOut=new FileOutputStream("D:\\Test\\t2.txt"); //指定向该文件输出数据 String str="这是输出流测试"; fileOut.write(str.getBytes()); //将数据写入内存 fileOut.flush(); //将内存中的数据写到硬盘 fileOut.close(); //关闭流 System.out.println("输出完毕"); }catch(Exception e){ e.printStackTrace(); } }
3、文件字节流练习:将一个文件复制到另一个指定文件夹下
public static void copyFile(String inFile,String outFile){ try{ //FileInputStream fileIn=new FileInputStream("D:\\Test\\t1.txt"); //读取的源文件 FileInputStream fileIn=new FileInputStream(inFile); //读取的源文件 //FileOutputStream fileOut=new FileOutputStream("D:\\Test\\t3.txt"); //复制到指定文件 FileOutputStream fileOut=new FileOutputStream(outFile); //复制到指定文件 byte []b=new byte[100]; int len=0; while((len=fileIn.read(b))!=-1){ System.out.println(new String(b,0,len)); fileOut.write(b, 0, len); //缓冲数组 开始写入位置 数组总长度 } fileOut.flush(); //写入内存的数据刷到硬盘 fileOut.close(); fileIn.close(); }catch(Exception e){ e.printStackTrace(); } }
五、文件字符流
1、字符流输入:
//先建立一个流对象,将已存在的一个文件加载进流 FIleReader fr=new FileReader("test.txt"); //再创建一个临时存放数据的数组(字节流是byte类型) char[]ch=new char[1024]; //然后调用流对象的读取方法将流中的数据读入到数组中 fr.read(ch);
2、字符流输出:
操作与上面类似
原文:https://www.cnblogs.com/MeiToufu/p/14347474.html