Java文件流的原理与应用

如何判断是输入流还是输出流?
以内存为参照物,如果数据是向内存流动是输入流,反之则是输出流
java流分为两种流
1,字节流:可以用于读写二进制文件及任何类型文件byte
2,字符流:可以用于读写文件文本
字节流:输入(InputStream) 输出(OutputStream)
字符流:输入(Reader)         输出(writer)
import java.io.File;
import java.io.IOException;
public class Test1 {
 
 public Test1() {
 }
public void test1() {
// // 创建一个文件对象
// File ff = new File("F:\\aa.txt");
//  System.out.println("文件路径" + ff.getAbsolutePath());
//  System.out.println("文件大小" + ff.length());

//  //创建一个文件和创建文件夹
//  File f=new File("f:\\fff\\hsp.txt");
//  if(!f.exists())
//  {
//   //可以创建
// try {
// f.createNewFile();
//} catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
//}
//  }
//  else{
//   
//   System.out.println("有文件");
//  }
//  
//  
// File fff=new File("f:\\fff");
// if(f.isDirectory())
// {
//  System.out.print("文件夹已存在");
// }
// else{//创建
//  fff.mkdir();
// }
 
 //列出文件夹所有文件
 File ffff=new File("F:\\123");
 if(ffff.isDirectory())
 {
  File list[]=ffff.listFiles();
 for(int i=0;i<list.length;i++)
 {
  System.out.println("文件名"+list[i].getName());
 }
 }
  
 }
}
 
 
 
 
 

package net.test2;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
//演示FileInputStreaam  读取文件内容
public class Demo11_2 {
//构造函数
public Demo11_2(){}
public void demo()
{
 File f=new File("F:/test.txt");
 FileInputStream fis=null;
 //因为File没有读写的能力,所以需要有个InputStream
 try {
  fis=new FileInputStream(f);
  //定义一个字节数组,相当于缓存
  byte []bytes=new byte[1024];
  int n=0;      //得到实际读取到的字节数
  //循环读取
 
   while((n=fis.read(bytes))!=-1)
   {
    //把字节转成String
    String s=new String(bytes,0,n);
    System.out.println(s);
   }
  
 } catch (Exception e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }finally{
  //关闭文件流必须放这里
  try {
   fis.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
}
}
 
 

package net.test3;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
//FileoutputStream的使用
public class Demo11_3 {
public Demo11_3(){}
FileOutputStream fos=null;
public void demo()
{
  File f=new File("f:/ss.txt");
try {
 fos=new FileOutputStream(f);
 
 String s="hello word"; //换行就是在字符末尾加上\r\n
 String s1="你好!";
 //定义字节数组
 byte []bytes=new byte[1024];
 //如何把string转化为bytes数组
 fos.write(s.getBytes());
 fos.write(s1.getBytes());
 
} catch (Exception e) {
 // TODO: handle exception
}finally{
 try {
  fos.close();
 } catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 
}
}
}
 
 
package net.test4;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo12_4 {
public Demo12_4(){}
public void demo()
{
      //先把图片加入到内存——》写入某个文件
        //因为是二进制文件,只能用字节流完成
FileInputStream fis=null;
// 输出流
FileOutputStream fos=null;
try {
 fis=new FileInputStream("e:/照片/12.jpg");
 fos=new FileOutputStream("d:/12.jpg");
 
 //用byte存储二进制文件,,byte数组相当于缓存
byte buf[]=new byte[1024];
int n=0; //记录事迹读取到的字节数
 //循环读取
while((n=fis.read(buf))!=-1)
{
 //输出到指定文件夹
 fos.write(buf);
 
}
 
 
 
} catch (Exception e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
}finally
{
 try {
 fis.close();
} catch (IOException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
} 
}
 
}
}
 
package net.test5;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
//演示文件字符流
public class Demo2_5 {
 
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  // 文件取出字符流对象(输入流)
  FileReader fr = null;
  // 写入到文件(输出流)
  FileWriter fw = null;
  try {
   //创建一个fr对象
   fr=new FileReader("d:/test.txt");
   fw=new FileWriter("d:/133/test.txt");
   int n=0; //用来记录事迹读取的字符数
   //读入到内存
   char c[]=new char[1024];
   while((n=fr.read(c))!=-1)
   {  
//    String s=new String(c,0,n);
//    System.out.println(s);
    
    fw.write(c,0,n);
   }
   
  } catch (Exception e) {
   // TODO: handle exception
  }
  finally{
   try {
    fr.close();
    fw.close();
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   
  }
 }
}
 
 
package net.test6;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
//演示缓存字符流
public class Demo12_6 {
 
 public static void main(String[] args) {
  // TODO Auto-generated method stub
BufferedReader br=null;
BufferedWriter bw=null;  
try {
 FileReader fr = new FileReader("d:/test.txt");
  br=new BufferedReader(fr);
  FileWriter fw=new FileWriter("d:/test1.txt");
  bw= new BufferedWriter(fw);
 //循环读取文件
 String s="";
 while((s=br.readLine())!=null)
 {
//  System.out.println(s);
  bw.write(s+"\r\n");
 }
 
} catch (Exception e) {
 // TODO: handle exception
}
finally{
 try {
  bw.close();
  br.close();
 } catch (Exception e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 
}
}
 
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值