zoukankan      html  css  js  c++  java
  • 文件的简单读写

    ------------siwuxie095

       

       

       

       

       

       

    工程名:ReadWriteTextFile

    包名:com.siwuxie095.rwfile

    类名:ReadWriteFile.java

       

       

    手动在工程上创建文件:

    在工程名:ReadWriteTextFile 上,右键->New->Untitled Text File,

    输入一首唐诗,保存路径选择 ReadWriteTextFile,命名为 text.txt

       

     

    工程结构目录如下:

       

       

       

    text.txt 的内容:

       

       

       

       

       

    代码:

       

    package com.siwuxie095.rwfile;

       

    import java.io.BufferedReader;

    import java.io.BufferedWriter;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.FileNotFoundException;

    import java.io.FileOutputStream;

    import java.io.IOException;

    import java.io.InputStreamReader;

    import java.io.OutputStreamWriter;

    import java.io.UnsupportedEncodingException;

       

    /**

    * 文件的读取:

    * 首先创建一个文件的输入流,再创建一个文件输入流的Reader

    * 然后再创建一个带有缓冲的输入Reader(也是一个输入流)

    *

    * 文件的写出:和文件读取的3个流相对应

    * 文件的输出流,带有Writer的输出流, 带有缓冲的输出Writer

    *

    * @author siwux

    *

    */

       

       

    public class ReadWriteFile {

       

    public static void main(String[] args) {

     

    //文件的读取

    File file=new File("text.txt");

     

    if (file.exists()) {

    System.err.println("exist");

     

     

    try {

     

    //要读取文件内容,首先要创建一个文件输入流 FileInputStream (字节流)

    //同时创建文件输入流对象,并赋值,有两个常用构造方法

    //第一个传入文件,作为要读取的文件对象,第二个传入字符串,来指定当前文件的路径

    //这里使用第一个构造方法,同时有异常的抛出

    //使用 try catch 语句捕获:Surround with try/catch

    FileInputStream fis=new FileInputStream(file);

     

     

     

     

    try {

     

    //获取文件输入流之后,需要将其包装成一个 InputStreamReader (字符流)

    //使用构造方法:传入输入流 InputStream:fis

    //同时指定一个String类型的字符集 CharsetName:"UTF-8"

    //(在字符和字节之间转换时必须要指定文本的编码,否则可能会出现乱码)

    //同样会有异常抛出,添加到 try catch 语句中:Surround with try/catch

    InputStreamReader isr=new InputStreamReader(fis, "UTF-8");

     

     

    //创建InputStreamReader之后,需要再创建一个带有缓冲区的ReaderBufferedReader

    //并指定一个新的实例,传入Readerisr br可以直接读取一行数据

    BufferedReader br=new BufferedReader(isr);

     

     

    //用于文件输入的三个流准备完毕,再创建一个 String 用来临时存放读取到的一行数据

    String line;

    //while循环,让 line 等于读取到的一行数据(BufferedReader可以直接读取一行数据)

    while ((line=br.readLine())!=null) {

    //不为空,就输出一行数据

    System.out.println(line);

    }

     

     

    //读取完毕

    //关闭输入流 关闭的顺序是:先打开的后关闭,后打开的先关闭

    //br.readLine() br.close() isr.close() fis.close() 都会有异常的抛出

    //同样添加到try catch

    //br.readLine()处:Add catch clause to surrounding try

    br.close();

    isr.close();

    fis.close();

     

    } catch (UnsupportedEncodingException e) {

    //InputStreamReader catch

    e.printStackTrace();

    } catch (IOException e) {

    //br.readLine() br.close() isr.close() fis.close() catch

    e.printStackTrace();

    }

    } catch (FileNotFoundException e) {

    // FileInputStream catch

    e.printStackTrace();

    }

    }

     

     

     

     

    //文件的写出

    try {

     

     

    //会有异常抛出,将下面这段代码选中,右键->Surround With(Alt+Shift+Z)->Try/catch Block

    File newfile=new File("newtext.txt");

    //创建文件输出流(字节流)

    FileOutputStream fos=new FileOutputStream(newfile);

    //创建一个文件输出流的Writer(字符流)

    OutputStreamWriter osw=new OutputStreamWriter(fos,"UTF-8");

    //创建一个带有缓冲区的Writer

    BufferedWriter bw=new BufferedWriter(osw);

     

     

     

    //三个输出流准备完成后,如果文件不存在,不必专门把文件创建出来

    //因为在使用 FileOutputStream 时,如果该文件不存在,文件输出流会自动把该文件创建出来

     

     

     

    //向文件中写出数据 使用 BufferedWriter write() 方法 加入 换行

    //bw.write() 同样会有异常抛出

    //需要用 try catch 语句捕获:Add catch clause to surrounding try

    //BufferedWriter write() 方法 有覆盖性:每一次写都是将之前的文件覆盖

    bw.write(" 静夜思 ");

    bw.write("床前明月光, ");

    bw.write("疑是地上霜。 ");

    bw.write("举头望明月, ");

    bw.write("低头思故乡。 ");

     

     

    //写出完毕

    //关闭输出流 关闭的顺序是:先打开的后关闭,后打开的先关闭

    bw.close();

    osw.close();

    fos.close();

    System.out.println("写入完成");

     

     

    } catch (FileNotFoundException e) {

    //FileOutputStream catch

    e.printStackTrace();

    } catch (UnsupportedEncodingException e) {

    //OutputStreamWriter catch

    e.printStackTrace();

    } catch (IOException e) {

    //bw.write() bw.close() osw.close() fos.close() catch

    e.printStackTrace();

    }

    }

       

    }

       

       

    运行一览:

       

       

       

    此时的工程结构目录(需要手动刷新):

       

       

       

    newtext.txt 的内容:

       

       

       

       

       

       

    【made by siwuxie095】

  • 相关阅读:
    得不到的永远在骚动
    这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧【转】
    Windows CMD命令大全【转】
    创业为什么选择北上广?
    为什么你还把时间浪费在无效人脉社交上?
    五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程
    mysql分区操作
    程序员常用网站
    4种提升SQL查询性能的知识
    获得局域网内其他成员的信息
  • 原文地址:https://www.cnblogs.com/siwuxie095/p/6613146.html
Copyright © 2011-2022 走看看