标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流等等,java中将输入输出抽象称为流,就好像水管,将两个容器连接起来。将数据从外存中读取到内存中的称为输入流,将数据从内存写入外存中的称为输出流。流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。#####1.数据流: 一组有序,有起点和终点的字节的数据序列。包括输入流和输出流。
public class File extends Object implements Serializable,Comparable {}
File类共提供了三个不同的构造函数,以不同的参数形式灵活地接收文件和目录名信息。构造函数:>1)File (String pathname) 例:File f1=new File("FileTest1.txt"); //创建文件对象f1,f1所指的文件是在当前目录下创建的FileTest1.txt2)File (String parent , String child) 例:File f2=new File(“D:\dir1","FileTest2.txt") ;// 注意:D:\dir1目录事先必须存在,否则异常3)File (File parent , String child) 例:File f4=new File("\dir3"); File f5=new File(f4,"FileTest5.txt"); //在如果 \dir3目录不存在使用f4.mkdir()先创建 一个对应于某磁盘文件或目录的File对象一经创建, 就可以通过调用它的方法来获得文件或目录的属性。 1)public boolean exists( ) 判断文件或目录是否存在 2)public boolean isFile( ) 判断是文件还是目录 3)public boolean isDirectory( ) 判断是文件还是目录 4)public String getName( ) 返回文件名或目录名 5)public String getPath( ) 返回文件或目录的路径。 6)public long length( ) 获取文件的长度 7)public String[ ] list ( ) 将目录中所有文件名保存在字符串数组中返回。 File类中还定义了一些对文件或目录进行管理、操作的方法,常用的方法有: 1) public boolean renameTo( File newFile ); 重命名文件 2) public void delete( ); 删除文件 3) public boolean mkdir( ); 创建目录例子:import java.io.File; import java.io.IOException; public class TestFile { public static void main(String args[]) throws IOException { File dir = new File("\\root"); File f1 = new File(dir, "fileOne.txt"); File f2 = new File(dir, "fileTwo.java"); // 文件对象创建后,指定的文件或目录不一定物理上存在 if (!dir.exists()) dir.mkdir(); if (!f1.exists()) f1.createNewFile(); if (!f2.exists()) f2.createNewFile(); System.out.println("f1's AbsolutePath= " + f1.getAbsolutePath()); System.out.println("f1 Canread=" + f1.canRead()); System.out.println("f1's len= " + f1.length()); String[] FL; int count = 0; FL = dir.list(); for (int i = 0; i < FL.length; i++) { count++; System.out.println(FL[i] + "is in \\root"); } System.out.println("there are" + count + "file in //root"); } }
说明:File类的方法:(1) exists()测试磁盘中指定的文件或目录是否存在(2) mkdir()创建文件对象指定的目录(单层目录)(3) createNewFile()创建文件对象指定的文件(4) list()返回目录中所有文件名字符串##Java.IO流类库import java.io.IOException; import java.io.FileInputStream; ; public class TestFile { public static void main(String args[]) throws IOException { try{ FileInputStream rf=new FileInputStream("InputFromFile.java"); int n=512; byte buffer[]=new byte[n]; while((rf.read(buffer,0,n)!=-1)&&(n>0)){ System.out.println(new String(buffer) ); } System.out.println(); rf.close(); } catch(IOException IOe){ System.out.println(IOe.toString()); } } }
#####文件输出流:FileOutputStream类 作用:用来处理以文件作为数据输出目的数据流;或者说是从内存区读数据入文件 FileOutputStream类用来处理以文件作为数据输出目的数据流;一个表示文件名的字符串,也可以是File或FileDescriptor对象。 创建一个文件流对象有两种方法: 方式1: File f=new File (“d:/myjava/write.txt "); FileOutputStream out= new FileOutputStream (f); 方式2: FileOutputStream out=new FileOutputStream(“d:/myjava/write.txt "); 方式3:构造函数将 FileDescriptor()对象作为其参数。 FileDescriptor() fd=new FileDescriptor(); FileOutputStream f2=new FileOutputStream(fd); 方式4:构造函数将文件名作为其第一参数,将布尔值作为第二参数。 FileOutputStream f=new FileOutputStream("d:/abc.txt",true); 注意: (1)文件中写数据时,若文件已经存在,则覆盖存在的文件;(2)的读/写操作结束时,应调用close方法关闭流。 程序举例:使用键盘输入一段文章,将文章保存在文件write.txt中import java.io.IOException; import java.io.FileOutputStream; public class TestFile { public static void main(String args[]) throws IOException { try { System.out.println("please Input from Keyboard"); int count, n = 512; byte buffer[] = new byte[n]; count = System.in.read(buffer); FileOutputStream wf = new FileOutputStream("d:/myjava/write.txt"); wf.write(buffer, 0, count); wf.close(); // 当流写操作结束时,调用close方法关闭流。 System.out.println("Save to the write.txt"); } catch (IOException IOe) { System.out.println("File Write Error!"); } } }
#####FileInputStream流和FileOutputStream的应用利用程序将文件file1.txt 拷贝到file2.txt中。import java.io.File; import java.io.IOException; import java.io.FileOutputStream; import java.io.FileInputStream; public class TestFile { public static void main(String args[]) throws IOException { try { File inFile = new File("copy.java"); File outFile = new File("copy2.java"); FileInputStream finS = new FileInputStream(inFile); FileOutputStream foutS = new FileOutputStream(outFile); int c; while ((c = finS.read()) != -1) { foutS.write(c); } finS.close(); foutS.close(); } catch (IOException e) { System.err.println("FileStreamsTest: " + e); } } }
#####缓冲输入输出流 BufferedInputStream/ BufferedOutputStream import java.io.*; public class ReadWriteToFile { public static void main(String args[]) throws IOException { InputStreamReader sin = new InputStreamReader(System.in); BufferedReader bin = new BufferedReader(sin); FileWriter out = new FileWriter("myfile.txt"); BufferedWriter bout = new BufferedWriter(out); String s; while ((s = bin.readLine()).length() > 0) { bout.write(s, 0, s.length()); } } }
程序说明:从键盘读入字符,并写入到文件中BufferedReader类的方法:String readLine()作用:读一行字符串,以回车符为结束。BufferedWriter类的方法:bout.write(String s,offset,len)作用:从缓冲区将字符串s从offset开始,len长度的字符串写到某处。#####字符流Writer/Reader Java中字符是采用Unicode标准,一个字符是16位,即一个字符使用两个字节来表示。为此,JAVA中引入了处理字符的流。>感谢 真实的归宿