字符节点流(FileReader/FileWriter)

读取文件步骤

  1. 建立一个流对象,将已存在的一个文件加载进流。
    FileReader fr = new FileReader(new File(“Test.txt”));
  2. 创建一个临时存放数据的数组。
    char[] ch = new char[1024];
  3. 调用流对象的读取方法将流中的数据读入到数组中。
    fr.read(ch);
  4. 关闭资源。
    fr.close();

写入文件

  1. 创建流对象,建立数据存放文件

FileWriter fw = new FileWriter(new File(“Test.txt”));

  1. 调用流对象的写入方法,将数据写入流

fw.write(“hongkang”);

  1. 关闭流资源,并将流中的数据清空到文件中。

fw.close();

  1. public void testFileReader1() {
  2. FileReader fr = null;
  3. try {
  4. //1.File类的实例化
  5. File file = new File("hello.txt");
  6. //2.FileReader流的实例化
  7. fr = new FileReader(file);
  8. //3.读入的操作
  9. //read(char[] cbuf):返回每次读入cbuf数组中的字符的个数。如果达到文件末尾,返回-1
  10. char[] cbuf = new char[5];
  11. int len;
  12. while((len = fr.read(cbuf)) != -1){
  13. //方式一:
  14. //错误的写法
  15. // for(int i = 0;i < cbuf.length;i++){
  16. // System.out.print(cbuf[i]);
  17. // }
  18. //正确的写法
  19. // for(int i = 0;i < len;i++){
  20. // System.out.print(cbuf[i]);
  21. // }
  22. //方式二:
  23. //错误的写法,对应着方式一的错误的写法
  24. // String str = new String(cbuf);
  25. // System.out.print(str);
  26. //正确的写法
  27. String str = new String(cbuf,0,len);
  28. System.out.print(str);
  29. }
  30. } catch (IOException e) {
  31. e.printStackTrace();
  32. } finally {
  33. if(fr != null){
  34. //4.资源的关闭
  35. try {
  36. fr.close();
  37. } catch (IOException e) {
  38. e.printStackTrace();
  39. }
  40. }
  41. }
  42. }

字节节点流(FileInputStream/FileOutputStream)

  1. public void copyFile(String srcPath,String destPath){
  2. FileInputStream fis = null;
  3. FileOutputStream fos = null;
  4. try {
  5. //创建文件
  6. File srcFile = new File(srcPath);
  7. File destFile = new File(destPath);
  8. //创建数据流
  9. fis = new FileInputStream(srcFile);
  10. fos = new FileOutputStream(destFile);
  11. //复制的过程
  12. byte[] buffer = new byte[1024];
  13. int len;
  14. while((len = fis.read(buffer)) != -1){//将fis文件内容读入到数组buffer
  15. fos.write(buffer,0,len);//将数组内容写入到fos
  16. }
  17. } catch (IOException e) {
  18. e.printStackTrace();
  19. } finally {
  20. if(fos != null){
  21. //
  22. try {
  23. fos.close();
  24. } catch (IOException e) {
  25. e.printStackTrace();
  26. }
  27. }
  28. if(fis != null){
  29. try {
  30. fis.close();
  31. } catch (IOException e) {
  32. e.printStackTrace();
  33. }
  34. }
  35. }
  36. }

使用说明

  • 定义文件路径时,注意:可以用“/”或者“\”。
  • 在写入一个文件时,如果使用构造器FileOutputStream(file),则目录下有同名文件将被覆盖。
  • 如果使用构造器FileWriter(file,true)或FileOutputStream(file,true),则目录下的同名文件不会被覆盖, 在文件内容末尾追加内容。
  • 在读取文件时,必须保证该文件已存在,否则报异常。
  • File对应的硬盘中的文件如果不存在,在输出的过程中,会自动创建此文件。
  • 字节流操作字节,比如:.mp3,.avi,.rmvb,mp4,.jpg,.doc,.ppt
  • 字符流操作字符,只能操作普通文本文件。最常见的文本文 件:.txt,.java,.c,.cpp 等语言的源代码。尤其注意.doc,excel,ppt这些不是文本文件。