Fork me on GitHub

文件的简单读写

------------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() 方法 加入 \n 换行

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

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

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

bw.write(" 静夜思\n");

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

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

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

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

 

 

//写出完毕

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

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】

posted on 2017-03-24 19:57  siwuxie095  阅读(442)  评论(0编辑  收藏  举报

导航