版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java文件读写操作代码实现package test;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java
2、.io.InputStream;import java.io.InputStreamReader;/* * 一、BufferedReader类 public class BufferedReader extends Reader * 从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。 可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值足够大。 * 通常,Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求。因此,建议用 BufferedReader包装所有其 read() * 操作可能开销很高的 Reader(如 FileReader
3、和 InputStreamReader)。 * BufferedReader流能够读取文本行,通过向BufferedReader传递一个Reader对象 * ,来创建一个BufferedReader对象,之所以这样做是因为FileReader没有提供读取文本行的功能. * * 二、InputStreamReader类 * * InputStreamReader 将字节流转换为字符流。是字节流通向字符流的桥梁。如果不指定字符集编码,该解码过程将使用平台默认的字符编码,如:GBK。 * * 构造方法: * * InputStreamReader isr = new InputStreamReade
4、r(InputStream * in);/构造一个默认编码集的InputStreamReader类 * * InputStreamReader isr = new InputStreamReader(InputStream in,String * charsetName);/构造一个指定编码集的InputStreamReader类。 * * 参数 in对象通过 InputStream in = System.in;获得。/读取键盘上的数据。 * * 或者 InputStream in = new FileInputStream(String fileName);/读取文件中的数据。可以看出 *
5、 FileInputStream 为InputStream的子类。 * * 主要方法:int read();/读取单个字符。 int read(char cbuf);/将读取到的字符存到数组中。返回读取的字符数。 * * 三、FileWriter(少量文字) 和 BufferedWriter(大量文字)实现简单文件写操作 * author hulk */public class FileReadWriteUtil / "D:demo.txt"private static String PATH = "/home/hulk/devtools/adt-bundle-l
6、inux-x86_64-20140702/workspace/JavaTest/readme.txt"/ orprivate static boolean debugMode = true; /* * param args */public static void main(String args) / readSystemInputText();/读取键盘输入文字信息/ testBufferReader();String aaaaPath = "/home/hulk/aaaa.txt"String aaaPath = "/home/hulk/aaa.t
7、xt"String text = readResourceFile(aaaaPath).toString();/ 读取文件资源String appendtext = "nnAAAAAAAAAAAAaaaaaaaaaaaaaaaanBBBBBBBBBBBBBBBBbbbbbbbbbbbbb"writeText(aaaPath, text, false);readResourceFile(aaaPath);/ 读取文件资源private static void testBufferReader() try readFileNoBuffer(PATH, 2048);/
8、不使用缓冲区readFileByBuffer(PATH);/ 使用缓冲区,适用于,读取完整文件 catch (IOException e) e.printStackTrace();public static void setDebugMode(boolean debugMode) FileReadWriteUtil.debugMode = debugMode;/* * 没有缓冲区,只能使用read()方法,得指定要读取的字符长度 * * throws IOException */public static String readFileNoBuffer(String path, int rea
9、dChars)throws IOException / 读取字节流/ InputStream in = System.in;/读取键盘的输入。InputStream in = new FileInputStream(path);/ 读取文件的数据。/ 将字节流向字符流的转换。要启用从字节到字符的有效转换,/ 可以提前从底层流读取更多的字节.InputStreamReader isr = new InputStreamReader(in);/ 读取char cha = new charreadChars;int len = isr.read(cha);String text = new Stri
10、ng(cha, 0, len);log(text);isr.close();return text;/* * 使用缓冲区 可以使用缓冲区对象的 read() 和 readLine()方法。 * * throws IOException */public static StringBuffer readFileByBuffer(String path) throws IOException / 读取字节流InputStream in = new FileInputStream(path);/ 读取文件上的数据。InputStreamReader isr = new InputStreamRead
11、er(in);/ 将字节流向字符流的转换BufferedReader bufr = new BufferedReader(isr);/ 创建字符流缓冲区StringBuffer buffer = new StringBuffer();String line;while (line = bufr.readLine() != null) buffer.append(line).append("n");log(line);isr.close();return buffer;public static StringBuffer readText(String filePath) B
12、ufferedReader br = null;StringBuffer buffer = null;try br = new BufferedReader(new FileReader(filePath);String line = null;buffer = new StringBuffer();while (line = br.readLine() != null) buffer.append(line).append("n");log(line); catch (FileNotFoundException e) e.printStackTrace(); catch
13、(IOException e) e.printStackTrace(); finally if(br != null) try br.close(); catch (IOException e) e.printStackTrace();return buffer;public static StringBuffer readtextByChar(String filePath) StringBuffer text = null;FileReader reader = null;try reader = new FileReader(filePath);int ch = 0;text = new
14、 StringBuffer();while (ch = reader.read() != -1) text.append(char)ch); catch (FileNotFoundException e) e.printStackTrace(); catch (IOException e) e.printStackTrace(); finally if(reader != null) try reader.close(); catch (IOException e) e.printStackTrace();return text;/* * 使用FileWriter类写文本文件, 仅限制少量文字
15、 * Note: /使用这个构造函数时,如果存在filePath.txt文件,则先把这个文件给删除掉,然后创建新的filePath.txt * param filePath * param text * return the FileWriter object, null if throws Exception */public static FileWriter writeText(String filePath, String text) return writeText(filePath, text, false);/* * 使用FileWriter类写文本文件 * param file
16、Path * param text * param append true: 如果存在filePath.txt文件,则直接在后面追加字符串; false: 直接删除原文件 * return the FileWriter object, null if throws Exception */public static FileWriter writeText(String filePath, String text, boolean append) FileWriter writer = null;try writer = new FileWriter(filePath, append);wri
17、ter.write(text); catch (IOException e) e.printStackTrace(); finally if(writer != null) try writer.close(); catch (IOException e) e.printStackTrace();return writer;/* * 向文件写入字符串。可以时较大字符串. * 注意n不一定在各种计算机上都能产生换行的效果: * <p>可以用返回的BufferedWriter对象执行一下函数实现换行: * BufferedWriter out = FileReadWriteUtil.w
18、riteByBuffer("/demo.txt", "AAA", true); * out.newLine();/实现换行 * param filePath * param text * return The BufferedWriter object, null if throws Exception */public static BufferedWriter writeBufferText(String filePath, String text, boolean append) BufferedWriter out = null; try out
19、 = new BufferedWriter(new FileWriter(filePath, append);out.write(text);out.close(); catch (IOException e) e.printStackTrace(); finally if(out != null) try out.close(); catch (IOException e) e.printStackTrace();return out;public static boolean makeFile(String filePath) File file = new File(filePath);
20、if(!file.exists() if(file.isFile() File p = file.getParentFile();if(!p.exists() makeDir(p.getAbsolutePath();try return file.createNewFile(); catch (IOException e) e.printStackTrace();return false; else System.out.print("Not a file path: " + filePath);return false; else return true;public s
21、tatic boolean makeDir(String dir) File p = new File(dir);if(!p.exists() return p.mkdirs(); else return true;/* * 键盘输入读取文字信息 */public static String readSystemInputText() BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in);System.out.println("请输入一系列文字,可包括空格,完成后按回车即
22、可显示出来:");System.out.print("请在这里输入文字:");String text = null;try text = bufferedReader.readLine(); catch (IOException e) e.printStackTrace();log("你输入的文字为:" + text);return text;/* * 按行读取文件信息 * * param path * 文件存放路径,;如果文件在项目根目录下,直接用文件名即可eg. "readme.txt" */public static StringBuffer readResourceFile(String path) StringBuffer buffer = n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版小学四年级下册数学期中测试卷及答案(有一套)
- 2022小学三年级上册道德与法治 期末测试卷及参考答案(能力提升)
- 人教版二年级上册数学期中考试试卷附参考答案(预热题)
- 2022五年级上册数学期末测试卷附参考答案(精练)
- 一年级数学上册期中测试卷及参考答案(突破训练)
- 2022六年级上册数学期末考试试卷及参考答案(培优b卷)
- 2022六年级上册数学期末测试卷附完整答案(有一套)
- 人教版小学四年级下册数学期中测试卷含完整答案(网校专用)
- 人教版小学四年级下册数学期末测试卷完整
- 中牟县六年级下册数学期末测试卷一套
- 2019土地租赁合同范本
- 新媒体背景下的科普传播对策研究
- 基础和声学智慧树知到期末考试答案章节答案2024年齐鲁师范学院
- D -Z-T 0462.1-2023 矿产资源“三率”指标要求 第1部分:煤(正式版)
- 人人讲安全、个个会应急-畅通生命通道2024年安全生产月主题活动
- 现场急救与灾难应变(校内) 知到智慧树网课答案
- 2024年浙江嘉兴职业技术学院海盐学院招聘高层次紧缺人才历年高频考题难、易错点模拟试题(共500题)附带答案详解
- 2024-2030年中国无人驾驶清扫车行业需求态势与应用前景预测报告
- 疼痛诊疗学智慧树知到期末考试答案章节答案2024年山东第二医科大学
- 美学原理 2024 知到智慧树网课答案
- 2024年贵州省安顺市平坝区环境保护局招聘5人历年公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
评论
0/150
提交评论