文件读写回顾
来源:互联网 发布:二次供水设备厂家 知乎 编辑:程序博客网 时间:2024/06/18 02:57
文件读写方法
1、字节读写(InputStream/OutputStream)
2、字符读取(FileReader/FileWriter)
3、行读取(BufferedReader/BufferedWriter)
package com.waddell.basic; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class FileOperate { private static final String FILE_PATH = "d:/work/jipinwodi.txt"; /** * 以字节为单位读写文件内容 * * @param filePath * :需要读取的文件路径 */ public static void readFileByByte(String filePath) { File file = new File(filePath); // InputStream:此抽象类是表示字节输入流的所有类的超类。 InputStream ins = null; OutputStream outs = null; try { // FileInputStream:从文件系统中的某个文件中获得输入字节。 ins = new FileInputStream(file); outs = new FileOutputStream("d:/work/readFileByByte.txt"); int temp; // read():从输入流中读取数据的下一个字节。 while ((temp = ins.read()) != -1) { outs.write(temp); } } catch (Exception e) { e.getStackTrace(); } finally { if (ins != null && outs != null) { try { outs.close(); ins.close(); } catch (IOException e) { e.getStackTrace(); } } } } /** * 以字符为单位读写文件内容 * * @param filePath */ public static void readFileByCharacter(String filePath) { File file = new File(filePath); // FileReader:用来读取字符文件的便捷类。 FileReader reader = null; FileWriter writer = null; try { reader = new FileReader(file); writer = new FileWriter("d:/work/readFileByCharacter.txt"); int temp; while ((temp = reader.read()) != -1) { writer.write((char)temp); } } catch (IOException e) { e.getStackTrace(); } finally { if (reader != null && writer != null) { try { reader.close(); writer.close(); } catch (IOException e) { e.printStackTrace(); } } } } /** * 以行为单位读写文件内容 * * @param filePath */ public static void readFileByLine(String filePath) { File file = new File(filePath); // BufferedReader:从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。 BufferedReader bufReader = null; BufferedWriter bufWriter = null; try { // FileReader:用来读取字符文件的便捷类。 bufReader = new BufferedReader(new FileReader(file)); bufWriter = new BufferedWriter(new FileWriter("d:/work/readFileByLine.txt")); // buf = new BufferedReader(new InputStreamReader(new // FileInputStream(file))); String temp = null; while ((temp = bufReader.readLine()) != null) { bufWriter.write(temp+"\n"); } } catch (Exception e) { e.getStackTrace(); } finally { if (bufReader != null && bufWriter != null) { try { bufReader.close(); bufWriter.close(); } catch (IOException e) { e.getStackTrace(); } } } } /** * 使用Java.nio ByteBuffer字节将一个文件输出至另一文件 * * @param filePath */ public static void readFileByBybeBuffer(String filePath) { FileInputStream in = null; FileOutputStream out = null; try { // 获取源文件和目标文件的输入输出流 in = new FileInputStream(filePath); out = new FileOutputStream("d:/work/readFileByBybeBuffer.txt"); // 获取输入输出通道 FileChannel fcIn = in.getChannel(); FileChannel fcOut = out.getChannel(); ByteBuffer buffer = ByteBuffer.allocate(1024); while (true) { // clear方法重设缓冲区,使它可以接受读入的数据 buffer.clear(); // 从输入通道中将数据读到缓冲区 int r = fcIn.read(buffer); if (r == -1) { break; } // flip方法让缓冲区可以将新读入的数据写入另一个通道 buffer.flip(); fcOut.write(buffer); } } catch (Exception e) { e.printStackTrace(); } finally { if (in != null && out != null) { try { in.close(); out.close(); } catch (IOException e) { e.printStackTrace(); } } } } public static long getTime(){ return System.currentTimeMillis(); } public static void main(String args[]) { long time1 = getTime() ; // readFileByByte(FILE_PATH);// 8734,8281,8000,7781,8047 // readFileByCharacter(FILE_PATH);// 734, 437, 437, 438, 422 // readFileByLine(FILE_PATH);// 110, 94, 94, 110, 93 readFileByBybeBuffer(FILE_PATH);// 125, 78, 62, 78, 62 long time2 = getTime() ; System.out.println(time2-time1); } }
0 0
- 文件读写回顾
- android JNI之C 语言回顾:文件的读写和随机数函数
- C语言回顾(九、文件读写各种操作)——iOS开发基础
- dom读写xml相关回顾
- 文件读写、剪贴板读写
- 读写文件
- 文件读写
- 读写文件
- 读写文件
- 文件读写
- 读写文件
- 读写文件
- 读写文件
- 文件读写
- 文件读写
- 文件读写
- 文件读写
- 读写文件
- 万元空气净化器涉嫌虚假宣传 京东被起诉退一赔三
- Linux的O_DIRECT选项
- Android源码分析—属性动画的工作原理
- Largest Number
- 【UGUI】统一管理技能及物品cd
- 文件读写回顾
- Docker资料
- oracle Trace File Analyzer (TFA)使用方法(含BUG解决)一
- 深入浅出ES6(十一):生成器 Generators,续篇
- [uboot] uboot启动kernel篇(一)——Legacy-uImage & FIT-uImage
- 安装python 时出现no acceptable C compiler found in $PATH问题
- python 生成词云
- 面试中关于HashMap的时间复杂度O(1)的思考
- centos 6.5 安装历程