zoukankan      html  css  js  c++  java
  • java读取文件:文本文件

      一般使用串行方式读出或者写入文件。总的来说,使用输入流把文件内容读入内存,使用输出流把内存中的信息写出到文件。这些类位于java.io包下。
    输入和输出的类和方法往往是对应的

    文本文件

    先了解如何读写文本文件,然后看如何读写二进制文件。jaVa.ioReader用来读取字符,它的子类FileReader用来读取文本文件。
    FileReader打开指定路径下的文件。文件的路径分隔符可以用“\”或者“/”表示。

    “\”是Windows风格的写法,因为字符串中的特殊字符要转义,所以用两个斜线表示一个斜线。

    FileReader fr = new FileReader ("c: Wautoexec.bat"); //打幵文本文件

    “/”是Linux风格的路径写法,因为不需要转义,所以正斜线只需要写一个就可以了。

    FileReader fr = new FileReader ("c:/autoexec.bat"); //打开文本文件

    如果有一堆砖要搬,一次取不完,不会一次只拿一块砖,会尽量多拿几块。如果有很多内
    容要读,不会一次只读一个字节,而是一次尽量多读一些字节到缓存。

    FileReader fr = new FileReader ("c:/autoexec.bat"); //打开文本文件

     BufferedReader br = new BufferedReader (fr); //缓存读
     String line;
      while ((line = br .readLine ()) != null) { //按行读入文件
         System.out.println(line);
      }
      fr.close(); //关闭文本文件

    输入流把数据从硬盘读入随机访问存储器(Random Access Memory,简称RAM)。可以
    根据输入流构建BufferedReader,实现代码如下所示。

    String fileName = "SDIC.txt"; //文件名
    InputStream file = new FilelnputStream (new File (fileName)); //打开输入流
    //缓存读入数据
    BufferedReader in = new BufferedReader(new InputStreamReader(file,"GBK"));

    for循环按行读入一个文件

    String fileName = "SDIC.txt"; //文件名
    InputStream file = new FilelnputStream (new File (fileName));"打开输入流
    //缓存读入数据
    BufferedReader in = new BufferedReader(new InputStreamReader(file,"GBK"));
    String line = in.readLine();
    while (line != null) {
    System.out.println (line);
    line = in.readLine();
    }
    in.close ();

    一般来说,Writer是把内容立即写到硬盘。如果要多次调用write方法,则批量写入效率会
    更高。类似于团购,团购的价格往往比单件购买的价格低。可以使用缓存加快文件写入速度。

    //使用缺省的缓存大小
    BufferedWriter bw - new BufferedWriter(new FileWriter(fileName));
    bw.write (”Hello,China!"); //写入一个字符串
    bw.write (”
    ”); //写入换行符
    bw.write("Hello,World!");
    bw.close(); //把缓存中的内容写入文件

    使用BufferedWriter写入数据时,最后需要调用BufferedWriter的close方法。如果不关闭
    文件,可能导致缓存中的数据丢失,写入文件的数据不完整。

    按指定编码写入文本的完整代码如下所示。

    /*
         * 向文件写入字符串
         * 
         * @param content 字符串
         * 
         * @param fileName 文件名
         * 
         * @param encoding 编码
         */
        public static void writeToFile(String content, String fileName,
                String encoding) {
            try {
                FileOutputStream fos = new File0utputStream(fileName);
                OutputStreamWriter osw = new OutputStreamWriter(fos, encoding);
                BufferedWriter bw = new BufferedWriter(osw);
                bw.write(content);
                bw.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
    
            }
    
        }

    如果黑板上已经有字,可以选择抹去黑板上已有的字重新写,也可以在原来的文字后继续
    写。如果一个文件已经存在,可以把新的内容追加写到最后,也可以从头写入新内容,也就是
    覆盖写。FileWriter的构造方法区别于这两种写入方式。

    //FileWriter 构造方法 .
    FileWriter( String fileName, boolean mode) throws IOException

    其中的mode = false表示覆盖写,mode = true表示追加写。为了避免冲突,在一个时刻只
    能有一个线程写文件。

  • 相关阅读:
    创建DataFrame https://www.cnblogs.com/andrew-address/p/13040035.html
    vim
    python 上下文管理协议
    AutoLisp 函数总结
    Visual Lisp 专题
    python基础之字符编码
    9月24号面试总结(康拓普1面)
    9月20号面试总结(zhongluan)
    9月20号面试总结(shangyun)
    9.19面试总结(ximei)
  • 原文地址:https://www.cnblogs.com/Michael2397/p/7824754.html
Copyright © 2011-2022 走看看