




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
使用Java操作文本文件的方法详解 最初java是不支持对文本文件的处理的,为了弥补这个缺憾而引入了Reader和Writer两个类,这两个类都是抽象类,Writer中 write(char ch,int off,int length),flush()和close()方法为抽象方法,Reader中read(char ch,int off,int length)和close()方法是抽象方法。子类应该分别实现他们。当我们读写文本文件的时候,采用Reader是非常方便的,比如FileReader,InputStreamReader和BufferedReader。其中最重要的类是InputStreamReader,它是字节转换为字符的桥梁。你可以在构造器重指定编码的方式,如果不指定的话将采用底层操作系统的默认编码方式,例如GBK等。当使用FileReader读取文件的时候。 FileReader fr = new FileReader(ming.txt); int ch = 0; while(ch = fr.read()!=-1 ) System.out.print(char)ch); 其中read()方法返回的是读取得下个字符。当然你也可以使用read(char ch,int off,int length)这和处理二进制文件的时候类似,不多说了。如果使用InputStreamReader来读取文件的时候while(ch = isr.read()!=-1)System.out.print(char)ch); 这和FileReader并没有什么区别,事实上在FileReader中的方法都是从InputStreamReader中继承过来的。read()方法是比较好费时间的,如果为了提高效率我们可以使用BufferedReader对Reader进行包装,这样可以提高读取得速度,我们可以一行一行的读取文本,使用readLine()方法。BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(ming.txt);String data = null;while(data = br.readLine()!=null)System.out.println(data); 当你明白了如何用Reader来读取文本文件的时候那么用Writer写文件同样非常简单。有一点需要注意,当你写文件的时候,为了提高效率,写入的数据会先放入缓冲区,然后写入文件。因此有时候你需要主动调用flush()方法。与上面对应的写文件的方法为:FileWriter fw = new FileWriter(hello.txt);String s = hello world;fw.write(s,0,s.length();fw.flush();OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(hello2.txt);osw.write(s,0,s.length();osw.flush();PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(hello3.txt),true);pw.println(s);不要忘记用完后关闭流!下面是个小例子,帮助新手理解。其实有的时候java的IO系统是需要我们多记记的,不然哪天就生疏了。import java.io.*;public class TestFile2public static void main(String args) throws IOExceptionFileReader fr = new FileReader(ming.txt);char buffer = new char1024;int ch = 0;while(ch = fr.read()!=-1 )System.out.print(char)ch);InputStreamReader isr = new InputStreamReader(new FileInputStream(ming.txt);while(ch = isr.read()!=-1)System.out.print(char)ch);BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(ming.txt);String data = null;while(data = br.readLine()!=null)System.out.println(data);FileWriter fw = new FileWriter(hello.txt);String s = hello world;fw.write(s,0,s.length();fw.flush();OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(hello2.txt);osw.write(s,0,s.length();osw.flush();PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(hello3.txt),true);pw.println(s);fr.close();isr.close();br.close();fw.close();osw.close();pw.close();java中多种方式读文件1、 多种方式读文件内容。1、按字节读取文件内容2、按字符读取文件内容3、按行读取文件内容4、随机读取文件内容其中 按字节读取就是按byte读取,这种方式是用于读取非文档型文件,如图片、视频等,按照字符读取就是按char读取,这种方式适用于对文档型文件的读取,如txt。按行读取以及随机读取不常见,可稍微了解一下就行。import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.RandomAccessFile;import java.io.Reader;public class ReadFromFile /* 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。* param fileName 文件的名*/public static void readFileByBytes(String fileName)File file = new File(fileName);InputStream in = null;try System.out.println(以字节为单位读取文件内容,一次读一个字节:);/ 一次读一个字节in = new FileInputStream(file);int tempbyte;while(tempbyte=in.read() != -1)System.out.write(tempbyte);in.close(); catch (IOException e) e.printStackTrace();return;try System.out.println(以字节为单位读取文件内容,一次读多个字节:);/一次读多个字节byte tempbytes = new byte100;int byteread = 0;in = new FileInputStream(fileName);ReadFromFile.showAvailableBytes(in);/读入多个字节到字节数组中,byteread为一次读入的字节数while (byteread = in.read(tempbytes) != -1)System.out.write(tempbytes, 0, byteread); catch (Exception e1) e1.printStackTrace(); finally if (in != null)try in.close(); catch (IOException e1) /* 以字符为单位读取文件,常用于读文本,数字等类型的文件* param fileName 文件名*/public static void readFileByChars(String fileName)File file = new File(fileName);Reader reader = null;try System.out.println(以字符为单位读取文件内容,一次读一个字节:);/ 一次读一个字符reader = new InputStreamReader(new FileInputStream(file);int tempchar;while (tempchar = reader.read() != -1)/对于windows下,rn这两个字符在一起时,表示一个换行。/但如果这两个字符分开显示时,会换两次行。/因此,屏蔽掉r,或者屏蔽n。否则,将会多出很多空行。if (char)tempchar) != r)System.out.print(char)tempchar);reader.close(); catch (Exception e) e.printStackTrace();try System.out.println(以字符为单位读取文件内容,一次读多个字节:);/一次读多个字符char tempchars = new char30;int charread = 0;reader = new InputStreamReader(new FileInputStream(fileName);/读入多个字符到字符数组中,charread为一次读取字符数while (charread = reader.read(tempchars)!=-1)/同样屏蔽掉r不显示if (charread = tempchars.length)&(tempcharstempchars.length-1 != r)System.out.print(tempchars);elsefor (int i=0; i 4) ? 4 : 0;/将读文件的开始位置移到beginIndex位置。randomFile.seek(beginIndex);byte bytes = new byte10;int byteread = 0;/一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。/将一次读取的字节数赋给bytereadwhile (byteread = randomFile.read(bytes) != -1)System.out.write(bytes, 0, byteread); catch (IOException e)e.printStackTrace(); finally if (randomFile != null)try randomFile.close(); catch (IOException e1) /* 显示输入流中还剩的字节数* param in*/private static void showAvailableBytes(InputStream in)try System.out.println(当前字节输入流中的字节数为: + in.available(); catch (IOException e) e.printStackTrace();public static void main(String args) String fileName = C:/temp/newTemp.txt;ReadFromFile.readFileByBytes(fileName);ReadFromFile.readFileByChars(fileName);ReadFromFile.readFileByLines(fileName);ReadFromFile.readFileByRandomAccess(fileName);二、将内容追加到文件尾部import java.io.FileWriter;import java.io.IOException;import java.io.RandomAccessFile;/* 将内容追加到文件尾部*/public class AppendToFile /* A方法追加文件:使用RandomAccessFile* param fileName 文件名* param content 追加的内容*/public static void appendMethodA(String fileName,String content)try / 打开一个随机访问文件流,按读写方式RandomAccessFile randomFile = new RandomAccessFile(fileName, rw);/ 文件长度,字节数long fileLength = randomFile.length();/将写文件指针移到文件尾。randomFile.seek(fileLength);randomFile.writeBytes(content);randomFile.close(); catch (IOException e)e.printStackTrace();/* B方法追加文件:使用FileWriter* param fileName* param content*/public static void appendMethodB(String fileName, String content)try /打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件FileWriter writer = new FileWriter(fileName, true);writer.write(content);writer.close(); catch (IOException e) e.printStackTrace();public static void main(String args) String fileName = C:/temp/newTemp.txt;String content = new append!;/按方法A追加文件AppendToFile.appendMethodA(fileName, content);AppendToFile.appendMethodA(fileName, append end. n);/显示文件内容ReadFromFile.readFileByLines(fileName);/按方法B追加文件AppendToFile.appendMethodB(fileName, content);AppendToFile.appendMethodB(fileName, append end. n);/显示文件内容ReadFromFile.rea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 英语健康话题课件模板
- 景区垂钓区管理办法
- 平潭市民宿管理办法
- 口感西红柿管理办法
- 小学全托生管理办法
- 反洗钱监督管理办法
- 新疆麻黄草管理办法
- 基建办安全管理办法
- 无车位小区管理办法
- 商场外车位管理办法
- 2025年专四语法题
- GB/T 33993-2024商品二维码
- 《橡胶沥青应力吸收层应用技术指南》
- 2025年广西林业局直属事业单位招聘考试笔试高频重点提升(共500题)附带答案详解
- 2025年中国华能集团公司招聘笔试参考题库含答案解析
- 2025年浙江广电集团招聘笔试参考题库含答案解析
- 《ECMO安装及预充》课件
- 基因检测经销合同协议书
- 2024年河北省廊坊市“硕博”招聘42人历年高频考题难、易错点模拟试题(共500题)附带答案详解
- 物业个人充电桩免责协议书
- DZ∕T 0204-2022 矿产地质勘查规范 稀土(正式版)
评论
0/150
提交评论