您的位置:首页 > 其它

文件的简单读写

2017-03-24 19:59 141 查看
------------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 staticvoid 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之后,需要再创建一个带有缓冲区的Reader:BufferedReader

//并指定一个新的实例,传入Reader:isr
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】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: