Java基础知识 十二 IO流 (上)

File
 (1)IO流操作中大部分都是对文件的操作,所以Java就提供了File类供我们来操作文件


 (2)构造方法
  A:File file = newFile("e:\\demo\\a.txt");
  B:File file = newFile("e:\\demo","a.txt");
  C:File file = newFile("e:\\demo");
    File file2 =new File(file,"a.txt");


 (3)File类的功能
  A:创建功能
   publicboolean createNewFile()  创建文件,如果存在了就不创建了
   publicbooleanmkdir()  创建文件夹,如果存在了就不创建了
   publicbooleanmkdirs()  创建父子类型的文件夹,如果父文件夹不存在会自动创建,如果存在就不创建了
          
  B:删除功能
   publicbooleandelete()    删除(要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹)

 

  C:重命名功能
   publicboolean renameTo(Filedest)   注意:如果路径名相同,就是改名。
              如果路径名不同,就是改名并剪切。
  
  D:判断功能
   publicboolean isDirectory() 判断是否是文件夹
   publicboolean isFile()  是否是文件
   publicboolean exists()  判断是否存在
   publicboolean canRead() 能否读取
   publicboolean canWrite() 能否改写
   publicboolean isHidden() 是否影藏

  E:获取功能
  
   基本获取功能
   public StringgetAbsolutePath()  获取绝对路径
   public StringgetPath()   获取相对路径
   public StringgetName()   获取名字
   public longlength()   获取长度  (字节长度)
   public longlastModified()  获取最后的修改日期(毫秒值)


   高级获取功能
   publicString[] list()  获取指定目录下的所有文件或者文件夹的 名称 数组
   public File[]listFiles()  获取指定目录下的所有文件或者文件夹的 File 数组
   
  G:过滤器功能
   publicString[] list(FilenameFilterfilter)   //获取的是字符串类型的文件名
    
   public File[]listFiles(FilenameFilterfilter)  //获取的是对象类型的文件名  
  

 

IO流

 (1)IO用于在设备间进行数据传输的操作 


 (2)分类:
  A:流向
   输入流 读取数据
   输出流 写出数据
  B:数据类型
   字节流 
     字节输入流
     字节输出流
   字符流
     字符输入流
     字符输出流
  注意:
   a:如果我们没有明确说明按照什么分,默认按照数据类型分。
   b:除非文件用windows自带的记事本打开我们能够读懂,才采用字符流,否则建议使用字节流。


 (3)FileOutputStream写出数据
  A:操作步骤
   a:创建字节输出流对象
   b:调用write()方法
   c:释放资源
   
  B:代码体现:
   FileOutputStreamfos = new FileOutputStream("fos.txt");
   
   fos.write("hello".getBytes());
   
   fos.close();
   
  C:要注意的问题?
   a:创建字节输出流对象做了几件事情?
    A:创建字节输入流对象
      B:调用read()方法读取数据,并把数据显示在控制台
      C:释放资源
   
   b:为什么要close()?
    A:让流对象变成垃圾,这样就可以被垃圾回收器回收了
    B:通知系统去释放跟该文件相关的资源
    
   c:如何实现数据的换行?
    windows:\r\n
    linux:\n
    Mac:\r
    
   d:如何实现数据的追加写入?
      true
   
 (4)FileInputStream读取数据
  A:操作步骤
   a:创建字节输入流对象
   b:调用read()方法
   c:释放资源
   
  B:代码体现:
   FileInputStreamfis = new FileInputStream("fos.txt");
   
   //方式1
   int by =0;
   while((by=fis.read())!=-1){
    System.out.print((char)by);
   }
   
   //方式2
   byte[] bys =new byte[1024];
   int len =0;
   while((len=fis.read(bys))!=-1){
    System.out.print(newString(bys,0,len));
   }
   
   fis.close();


 

字符流
 (1)字节流操作中文数据不是特别的方便,所以就出现了转换流。
   转换流的作用就是把字节流转换字符流来使用。


 (2)转换流其实是一个字符流
  字符流 = 字节流 +编码表


 (3)编码表
  A:就是由字符和对应的数值组成的一张表
  B:常见的编码表
   ASCII
   ISO-8859-1
   GB2312
   GBK
   GB18030
   UTF-8
  C:字符串中的编码问题
   编码
    String-- byte[]
   解码
    byte[]-- String


 (4)IO流中的编码问题
  A:OutputStreamWriter
   OutputStreamWriter(OutputStreamos):默认编码,GBK
   OutputStreamWriter(OutputStreamos,String charsetName):指定编码。
  B:InputStreamReader
   InputStreamReader(InputStreamis):默认编码,GBK
   InputStreamReader(InputStreamis,String charsetName):指定编码
  C:编码问题其实很简单
   编码只要一致即可


 (5)字符流
  Reader
   |--InputStreamReader
    |--FileReader
   |--BufferedReader
  Writer
   |--OutputStreamWriter
    |--FileWriter
   |--BufferedWriter

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值