java IO与文件操作

文件创建与删除

创建目录或文件
  • createNewFile() 需要文件目录已存在

    public class IO {
      public static void main(String args[]) {
          String dirname = "D:\java\temp.txt";
          File d = new File(dirname);
          try {
              d.createNewFile();
          } catch (IOException e) {
              e.printStackTrace();
          }
      }
    }
    
  • 创建目录

    • mkdir( )方法创建一个文件夹,成功则返回true,失败则返回false。失败表明File对象指定的路径已经存在,或者由于整个路径还不存在,该文件夹不能被创建。

    • mkdirs()方法创建一个文件夹和它的所有父文件夹。

      String dirname = "D:\java\temp\123";
      File d = new File(dirname);
      d.mkdirs();
      
删除目录或文件
public class IO {
    public static void main(String args[]) {
        // 这里修改要删除的目录或文件
        File folder = new File("D:\java\temp");
        deleteFolder(folder);
    }

    // 删除文件及目录
    public static void deleteFolder(File folder) {
        File[] files = folder.listFiles();
        if (files != null) {
            for (File f : files) {
                if (f.isDirectory()) {
                    deleteFolder(f);
                } else {
                    f.delete();
                }
            }
        }
        folder.delete();
    }

}

文件读写

1.FileOutputStream

文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流。文件是否可用或能否可以被创建取决于基础平台。特别是某些平台一次只允许一个 FileOutputStream(或其他文件写入对象)打开文件进行写入。在这种情况下,如果所涉及的文件已经打开,则此类中的构造方法将失败。
FileOutputStream 用于写入诸如图像数据之类的原始字节的流。要写入字符流,请考虑使用 FileWriter。

2.InputStreamReader

InputStreamReader是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。
为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。例如:

    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
3.FilterReader

用于读取已过滤的字符流的抽象类。抽象类 FilterReader 自身提供了一些将所有请求传递给所包含的流的默认方法。FilterReader 的子类应重写这些方法中的一些方法,并且还可以提供一些额外的方法和字段。

public class IO {
    public static void main(String args[]) throws Exception {
        File file = new File("D:\java\temp.txt");
        // 第二个参数用来决定是否追加内容还是覆盖,默认为覆盖
        // 构建FileOutputStream对象,文件不存在会自动新建
        FileOutputStream fileOutputStream = new FileOutputStream(file,true);
        // 字符流转字节流
        OutputStreamWriter writer = new OutputStreamWriter(fileOutputStream);
        writer.append("OutputStreamWriter:145
");

        // 字节流处理
        BufferedWriter bufferedWriter = new BufferedWriter(writer);
        // 此行代码是使用字节流的方式
        //bufferedWriter = new BufferedWriter(new FileWriter(file));
        bufferedWriter.append("bufferedWriter:133444
");
        //使用PrintWriter类
        PrintWriter printWriter = new PrintWriter(file);
        printWriter.append("PrintWriter printWriter = new PrintWriter(file);
");

        printWriter.close();
        bufferedWriter.close();
        writer.close();
        fileOutputStream.close();


         // 使用节流方式读取
        BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
        // 使用字符流方式读取
        //FileInputStream fileInputStream = new FileInputStream(file);
        //BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
        String s ;
        while ((s = bufferedReader.readLine())!=null){
            System.out.println(s);
        }
        bufferedReader.close();
    }
}
原文地址:https://www.cnblogs.com/lifan1998/p/10402365.html