java干货Java学习笔记java

【Java】I/O:File、FileWriter(Buffer

2016-08-05  本文已影响126人  wuchaooooo

I/O类结构

IO类结构.png

创建文件夹

public static void creatFolder(String folderPath) {
  File file  = new File(folderPath);
  file.mkdirs();
  //注意mkdirs()和file.mkdir()的区别:
}

mkdirs()和mkdir()的区别:
如果是mkdir(),那么传入的路径folderPath的每一个文件夹都是必须存在的。(比如我们传入D:\IdeaProjects\test,我们的目的是创建一个test的文件夹,如果IdeaProjects这个文件夹不存在,那么test这个文件夹也不会被创建)。但是如果是mkdirs(),我们还是传入D:\IdeaProjects\test,目的是创建test文件夹,如果IdeaProjects这个文件夹不存在的话,程序会帮我们创建,然后在这个文件夹的下面创建test文件夹。

创建文件

public static boolean createFile(String fileName) {
  File file = new File(fileName);
  boolean isSuccess = false;
  try {
    isSuccess = file.createNewFile();
  } catch(IOException e) {
      e.printStackTrace;
  }
  return isSuccess;
}

创建文件夹的时候,我们也用到了File这个类。这里要注意的是,我们调用createNewFile()这个方法的时候(该方法的返回类型是布尔型),可能会出现异常(比如:要新建的文件名和已经存在的文件名重名),所以我们要在这里加上IO异常处理(try,catch语句)。另外,这里涉及到了绝对路径和相对路径。如果我们传入的是绝对路径(比如D:\IdeaProjects\test,那么没什么问题,会在我们指定的路径下创建test文件),但是如果我们传入的是相对路径(比如test),那么test这个文件就会新建在你当前java文件所在的工程的目录下。

在文件内写入内容

public static void writeToFile(String fileName) {
  File file = new File(fileName);
  BufferedWriter bufferedWriter = null;
  try {
    FileWriter writer = new FileWriter(file);
    bufferedWriter = new BufferedWriter(writer);
    bufferedWriter.write("你好");
    bufferedWriter.newLine;
    bufferedWriter.write("nihao");
    bufferedWriter.newLine;
    bufferedWriter.write("hello");
  }catch(IOException e) {
    e.printStackTrace();
  }finally {
    if (bufferedWriter != null) {
      try {
        bufferedWriter.close();
      }catch(IOExcption e) {
        e.printStackTrace();
      }
    }
  }
}

File、FileWriter、BufferedWriter:File类的话其实是一个一个字节传,然后用FileWriter类包装一下,变成一个一个字符传,然后再用BufferedWriter类包装一下,变成一块一块传(可以理解为多字符(或者说字符串)传)。这样子提高了IO流的传输速率。毕竟IO传输速率对整个程序的优化至关重要。

列出目录下的所有文件(包括文件夹和文件)

public static void listFiles(String folderPath) {
  File file = new File(folderPath);
  for (String fileName : file.list()) {
    System.out.println(fileName);
  }
}

读取文件内容

public static void readFromFile(String fileName) {
  File file = new File(fileName);
  BufferedReader bufferedReader = null;
  
  try {
    FileReader fileReader = new FileReader(file);
    bufferedReader = new BufferedReader(fileReader);
    String line  = bufferedReader.readline();
    while (line != null) {
      System.out.println(line);
      line = bufferedReader.readLine();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

删除文件

public static void deleteFile(String fileName) {
  File file = new File(fileName);
  file.delete();
}

拷贝文件

public static void copyFile(String originFile, String newFile) {
  File file1 = new File(originFile);
  File file2 = new File(newFile);
  BufferedReader bufferedReader = null;
  BufferedWriter bufferedWriter = null;

  try {
    FileReader fileReader = new FileReader(file1);
    FileWriter fileWriter = new FileWriter(file2);
    bufferedReader = new BufferedReader(fileReader);
    bufferedWriter = new BufferedWriter(fileWriter);
    String line = bufferedReader.readline();
    if (line != null) {
      bufferedWriter.write(line);
      line = bufferedReader.readLine();
    }
  } catch (IOException e) {
    e.printStackTrace();
  } finally {
      try {
        if (bufferedReader != null) {
          bufferedReader.close();
        }
        if (bufferedWriter != null) {
          bufferedWriter.close();
        }
      } catch (IOException e) {
        e.printStackTrace();
      }
  }
}
上一篇下一篇

猜你喜欢

热点阅读