1.InputStream和OutputStream接口
FileInputStream
package roy; import java.io.*; public class TestInputStream{ //输入流 --相对内存来说的。从硬盘读取数据到内存 public static void main(String args[])throws Exception{ File file = new File("TestInputStream.java"); InputStream is = new FileInputStream(file);//1.创建一个通向File的流(管道) int len = 0; while(len!=-1){//结束的控制 //每次读取一个字节 len = is.read();//读取字节 到len 2.传输数据 char c = (char)len;//强制转型 System.out.print(c); } System.out.println("/n 读取完毕!"); } }
FileOutputStream
package roy; import java.io.*; import java.util.*; //字节流 public class TestOutputStream{ //从内存写数据到硬盘 public static void main(String ags[])throws Exception{ Scanner sc = new Scanner(System.in); String fileName = sc.nextLine(); //覆盖 字节流 OutputStream os = new FileOutputStream(fileName);//1.创建管道 //2.写操作 os.write(123); os.write(124); os.write('a'); byte[] buf = {'a','b','c'}; os.write(buf); String zw = "测试输出流!~~"; os.write(zw.getBytes());//先把字符串转换为字节数组 System.out.println("写出成功!"); } }
FileInputStream+FileOutputStream 实现文件的复制
package roy; import java.io.*; import java.util.*; public class TestCopy{ public static void main(String args[]){ new CopyFile().copy("TestCopy.java","joe.java"); } } class CopyFile{ //实现文件的复制 public void copy(String srcPath,String posPath){ FileOutputStream fos =null; FileInputStream fis = null; try{//创建流 fis = new FileInputStream(srcPath); fos = new FileOutputStream(posPath); byte[] buf = new byte[1024]; int len =0; while(true){ //读取数据 len = fis.read(buf,0,buf.length); if(len==-1){ break; } //把上面刚刚读取进来内存的数据通过输出流 写数据 fos.write(buf,0,len);//通过输出流写数据到文件里面 } } catch (Exception e){ e.printStackTrace(); }finally{//无论程序是否抛出异常,我们都要回收资源 try{ //避免空指针异常 if(fis!=null){ fis.close(); } if(fos!=null){ fos.close(); } }catch(Exception ee){ ee.printStackTrace(); } } } }
DataInputStream和DataOutputStream
package roy; import java.io.*; import java.util.*; public class TestDataOutputStream{ public static void main(String args[])throws Exception{ //创建一条指向data.dat文件的输出流 OutputStream os = new FileOutputStream("data.dat"); DataOutputStream dos = new DataOutputStream(os);//通过os来创建一条DataOutputStream //因为我们要使用DataOutputStream里面的方法,所以再封装了此类 dos.writeInt(123); dos.writeChar('a'); dos.writeDouble(new Double(999)); dos.writeBoolean(true); dos.writeUTF("测试字符串的输出!"); dos.flush(); dos.close(); //读取 DataInputStream DataInputStream dis = new DataInputStream(new FileInputStream("data.dat")); //要使用对应的方法来读取 int i = dis.readInt(); char c = dis.readChar(); double d = dis.readDouble(); boolean flag = dis.readBoolean(); String utf = dis.readUTF(); //String utf2 = dis.readUTF();//没有数据可以读取了,会抛出EOF异常 System.out.println("读取: "+i+" - "+c+" - "+d+" - "+flag+" - "+utf); } }