码迷,mamicode.com
首页 > 编程语言 > 详细

java---2

时间:2017-04-29 18:55:32      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:writer   ast   code   inpu   utf-8   modified   nts   class   多个   

  今天打算过一遍java的io,主要是关注文件方面,当然还有什么zip之类的。

  io顾名思义就是输入和输出,根据操作的类型分为输入流和输出流,感觉流是一种通道,它给各种数据呀,文件呀提供通道。本身还是可以理解的。在java中,所有的io的操作基本放在java.io中,所有的输入流都是抽象类InputStream和Reader的子类,前者是字节输入流,后者则是字符输入流。与此对应的还有OutputStream和Writer抽象类。字节流读取的时候,读到一个字节就返回一个字节;  字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时。先去查指定的编码表,将查到的字符返回。字节流可以处理所有类型数据,而字符流只能处理字符数据。只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字节流。

  File类是唯一代表磁盘文件本身的对象。通过调用File类中的方法,实现创建(createNewFile()),删除(delete()),重命名文件等操作。同时此类提供了许多方法用来获取一些文件本身的信息,如判断文件是否存在(exits()),获取文件长度(length()),最后修改时间(lastModified())。

  当需要将数据永久保存时,就需要使用文件输入输出流与指定文件建立连接。FileInputStream和FileOutputStream都用来操作磁盘文件,前面说了这两个类都是对字节的操作,都只提供了对字节和字节数组的读取方法,由于汉字在文件中是占两个字节的,那么如果用这两个类读取汉字文本时,极大可能性会出现乱码现象。所以对于这种现象,我们应当采用FileReader和FileWriter类。FileReader流顺序地读取文件,只要不关闭流,每次调用read就顺序地读取源中其余的内容,直到被close。

  虽然在程序结束时自动关闭所有打开的流,但是在使用完流后,主动close仍然是一个好习惯,一个被打开的流可能会占尽系统资源,如果没有将打开的流关闭,当另一个程序试图打开另一个流时,可能会得不到需要的资源。

public class FileTest{
  public static void main(String[] args){
   File file=new File("word.txt");
   try{
       FileOutputStream a=new FileOutputStream(file);
       byte buy[]="你好java".getBytes();
       a.write(buy);
       a.close();
    }catch(Excetion e){
       e.printStackTrace();
    }
    try{
       FileInputStream b=new FileInputStream(file);
       byte by[]=new byte[1024];
       int h=b.read(by);
       System.out.println(new String(by,0,h));
       b.close();
    }catch(Excetion e){
       e.printStackTrace();
    }
 }
}
File f=new File("d:\\hah.txt");
        if(!f.exists()){
            try {
                f.createNewFile();
            } catch (IOException e) {
                // TODO 自动生成的 catch 块
                e.printStackTrace();
            }
        }else{
            System.out.println("哈皮");
        }

我在这里写这个的原因是因为我当初非常愚蠢的一段经历,我写了这两个测试程序,然后在思考一个问题。。为什么第一个程序没用createNewFile就创建了真实文件,难道File f=new File(...)就会创建真实文件么。。可是我清楚的记得,File只是创建一个映射对象,并不是创建一个真实的文件,如果有这个功能,那还要createNewFile()干什么。。。原来是因为我第一个程序还用了FileOutputStream..在使用文件输出类时,如果文件不存在,就会自动创建文件,使用文件输入类时,如果文件不存在,就会抛出异常IOException。很蠢。。但是当时想了好长时间。。。

java---2

标签:writer   ast   code   inpu   utf-8   modified   nts   class   多个   

原文地址:http://www.cnblogs.com/zzmher/p/6785710.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!