1、File类:表示文件对象。
--------------------------------------------------------------
2、流:用于输入输出的类。
按方向分为输入流和输出流;
按读取单位分为字节流和字符流;
按是否直接与数据源打交道分为节点流和处理流。
----------------------------------------------------------------
3、读文件
(1)创建合适的输入流对象。
(2)调用流对象的读方法读取数据。
(3)关闭流。
------------------------------------------------------------
4、写文件
(1)创建合适的输出流对象。
(2)调用流对象的写方法写数据。
(3)关闭流。
---------------------------------------------------------------------
5、复制文件
边读边写。
-------------------------------------------------------------------
6、举例 (1)在c盘下建立一个文本文件a.txt,读取里面的内容。 方法一:用字节流,一个字节一个字节读取。 public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub FileInputStream fis=new FileInputStream("c:/1.txt"); while(true){ int a=fis.read(); if(a==-1) break; else System.out.println(a); } fis.close(); } ------------------------------------------------------------------------------- 方法二:用字符流,一个字符一个字符读取 public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub FileReader fr=new FileReader("c:/1.txt"); while(true){ int a=fr.read(); if(a==-1) break; else System.out.print((char)a); } fr.close(); } ---------------------------------------------------------------------------------- 方法三:读取到一个数组中,这里以字符流为例。 public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub FileReader fr=new FileReader("c:/1.txt"); char[] c=new char[100]; while(true){ int a=fr.read(c);//a代表实际读入的字符个数 if(a==-1) break; else System.out.print(new String(c,0,a)); } fr.close(); } -------------------------------------------------------------------------------------- 方法四:用缓冲流,一次读取一行。 public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub FileReader fr=new FileReader("c:/1.txt"); BufferedReader br=new BufferedReader(fr); while(true){ String s=br.readLine(); if(s==null){ break; } else{ System.out.println(s); } } br.close(); } --------------------------------------------------------------------------------------- (2)写文件 方法一:用字节流,一次写一个字节。 public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub FileOutputStream fos=new FileOutputStream("c:/2.txt");//如果以追加方式写,加第二个参数true fos.write(65); fos.close(); } -------------------------------------------------------------------------------------------------- 方法二:用字符流,一次写一个字符。 public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub FileWriter fw=new FileWriter("c:/2.txt"); fw.write('哈') ; fw.close(); } ---------------------------------------------------------------------------------------------------- 方法三:以数组为单位写,这里以字符数组为例。 public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub FileWriter fw=new FileWriter("c:/2.txt"); String s="Java语言程序设计"; fw.write(s.toCharArray()) ; fw.close(); } ------------------------------------------------------------------------------------------------------- (3)文件复制:用字节流,带缓冲的字节流效率高。 方法一:读一个写一个 public static void main(String[] args) throws Exception { // TODO Auto-generated method stub FileInputStream fis = new FileInputStream("c:/1.txt"); FileOutputStream fos = new FileOutputStream("c:/2.txt"); long t1 = System.currentTimeMillis(); while (true) { int k = fis.read(); if (k == -1) { break; } else { fos.write(k); } } fis.close(); fos.close(); long t2 = System.currentTimeMillis(); System.out.println(t2 - t1); } ---------------------------------------------------------------------------------------------------- 方法二:读一批写一批 public static void main(String[] args) throws Exception { // TODO Auto-generated method stub FileInputStream fis = new FileInputStream("c:/1.txt"); BufferedInputStream bis = new BufferedInputStream(fis); FileOutputStream fos = new FileOutputStream("c:/2.txt"); BufferedOutputStream bos = new BufferedOutputStream(fos); long t1 = System.currentTimeMillis(); while (true) { int k = bis.read(); if (k == -1) { break; } else { bos.write(k); } } bis.close(); bos.close(); long t2 = System.currentTimeMillis(); System.out.println(t2 - t1); } ---------------------------------------------------------------------------------------------------