java IO复习笔记
1、IO概述
IO流用来处理设备之间的数据传输,Java中对文件的操作是以流的方式进行的。流,简单理解就是管道里有流水,这个管道连接了程序和文件。 严谨一点的定义,流是Java内存中的一组有序数据序列。
2、流的分类
流按操作数据分为字节流和字符流,流按流向分为输入流和输出流。字节流的抽象基类:InputStream,OutputStream。字符流的抽象基类:Reader,Writer
3、FileWriter与FileReader类
首先学习操作FileWriter,FileWriter是一个用来写入字符文件的便捷类。创建一个FileWriter对象,调用write方法写入字符串。
1 import java.io.*; 2 class FileWriterDemo 3 { 4 public static void main(String[] args) throws IOException 5 { 6 //创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件。 7 //而且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。 8 //其实该步就是在明确数据要存放的目的地。 9 FileWriter fw = new FileWriter("demo.txt"); 10 11 //调用write方法,将字符串写入到流中。 12 fw.write("abcde"); 13 14 //刷新流对象中的缓冲中的数据。 15 //将数据刷到目的地中。 16 //fw.flush(); 17 18 19 //关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。 20 //将数据刷到目的地中。 21 //和flush区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。 22 fw.close(); 23 } 24 }
其次,学习用FileReader类读取文本内容。FIleReader是用来读取字符文件的便捷类。创建一个FileReader对象,调用read方法读取文本内容。
1 import java.io.*; 2 3 class FileReaderDemo 4 { 5 public static void main(String[] args) throws IOException 6 { 7 //创建一个文件读取流对象,和指定名称的文件相关联。 8 //要保证该文件是已经存在的,如果不存在,会发生异常FileNotFoundException 9 FileReader fr = new FileReader("demo.txt"); 10 11 //调用读取流对象的read方法。 12 //read():一次读一个字符。而且会自动往下读。 13 14 int ch = 0; 15 16 while((ch=fr.read())!=-1) 17 { 18 System.out.println( 19 } 20 fr.close(); 21 } 22 }
4、BufferedWriter和BufferedReader
BufferedWriter可以将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。使用BufferedWriter时,写入的数据并不会先输出到目的地,而是先存储至缓冲区中。缓冲区的出现是为了提高流的操作效率而出现的。所以在创建缓冲区之前,必须要先有流对象。
以下是实现BufferedWriter的具体代码:
1 import java.io.*; 2 3 class BufferedWriterDemo 4 { 5 public static void main(String[] args) throws IOException 6 { 7 //创建一个字符写入流对象。 8 FileWriter fw = new FileWriter("buf.txt"); 9 10 //为了提高字符写入流效率。加入了缓冲技术。 11 //只要将需要被提高效率的流对象作为参数传递给缓冲区的构造函数即可。 12 BufferedWriter bufw = new BufferedWriter(fw); 13 14 for(int x=1; x<5; x++) 15 { 16 bufw.write("abcd"+x); 17 bufw.newLine(); 18 bufw.flush(); 19 } 20 21 //记住,只要用到缓冲区,就要记得刷新。 22 //bufw.flush(); 23 24 //其实关闭缓冲区,就是在关闭缓冲区中的流对象。 25 bufw.close(); 26 27 28 } 29 }
BufferedReader可以将从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。 字符读取流缓冲区提供了一个一次读一行的方法 readLine,方便于对文本数据的获取。
1 import java.io.*; 2 3 class BufferedReaderDemo 4 { 5 public static void main(String[] args) throws IOException 6 { 7 //创建一个读取流对象和文件相关联。 8 FileReader fr = new FileReader("buf.txt"); 9 10 //为了提高效率。加入缓冲技术。将字符读取流对象作为参数传递给缓冲对象的构造函数。 11 BufferedReader bufr = new BufferedReader(fr); 12 13 14 String line = null; 15 16 while((line=bufr.readLine())!=null) 17 { 18 System.out.print(line); 19 } 20 21 22 bufr.close(); 23 } 24 25 }
5、java.io包中最重要的是五个类和一个接口,5个类指File、OutputStream、InputStream、Writer、Reader。一个接口指Serializable。
6、File类
——使用File类操作文件
——File类常见方法
1,创建。
boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false。
和输出流不一样,输出流对象一建立创建文件。而且文件已经存在,会覆盖。
boolean mkdir():创建文件夹。
boolean mkdirs():创建多级文件夹。
2,删除。
boolean delete():删除失败返回false。如果文件正在被使用,则删除不了返回falsel。
void deleteOnExit();在程序退出时删除指定文件。
3,判断。
boolean exists() :文件是否存在.
isFile():
isDirectory();
isHidden();
isAbsolute();
4,获取信息。
getName():
getPath():
getParent():
getAbsolutePath()
long lastModified()
long length()
操作示例:
1 public static void method_3()throws IOException 2 { 3 File f = new File("d:\\java1223\\day20\\file2.txt"); 4 5 //f.createNewFile(); 6 7 //f.mkdir(); 8 9 10 //记住在判断文件对象是否是文件或者目的时,必须要先判断该文件对象封装的内容是否存在。 11 //通过exists判断。 12 sop("dir:"+f.isDirectory()); 13 sop("file:"+f.isFile()); 14 15 sop(f.isAbsolute()); 16 } 17 18 19 public static void method_2() 20 { 21 File f = new File("file.txt"); 22 23 //sop("exists:"+f.exists()); 24 25 //sop("execute:"+f.canExecute()); 26 27 //创建文件夹 28 File dir = new File("abc\\kkk\\a\\a\\dd\\ee\\qq\\aaa"); 29 30 sop("mkdir:"+dir.mkdirs()); 31 } 32 33 34 public static void method_1()throws IOException 35 { 36 File f = new File("file.txt"); 37 // sop("create:"+f.createNewFile()); 38 //sop("delete:"+f.delete()); 50 51 //创建File对象 52 public static void consMethod() 53 { 54 //将a.txt封装成file对象。可以将已有的和为出现的文件或者文件夹封装成对象。 55 File f1 = new File("a.txt"); 56 57 // 58 File f2 = new File("c:\\abc","b.txt"); 59 60 61 File d = new File("c:\\abc"); 62 File f3 = new File(d,"c.txt"); 63 64 sop("f1:"+f1); 65 sop("f2:"+f2); 66 sop("f3:"+f3); 67 68 File f4 = new File("c:"+File.separator+"abc"+File.separator+"zzz"+File.separator+"a.txt"); 69 70 71 } 72 73 public static void sop(Object obj) 74 { 75 System.out.println(obj); 76 } 77 }
浙公网安备 33010602011771号