java文件读写
来源:互联网 发布:域名注册了怎么用 编辑:程序博客网 时间:2024/06/01 21:46
java文件读写涉及到很多IO操作,读写方法较多,下面从字节流、字符流、节点流、处理流等方面进行介绍。
1.基本概念
- 输出流:程序->文件
- 输入流:文件->程序
- 字节流:一次读入或者读出是8位二进制
- 字符流:一次读入或者读出是16位二进制流
- 节点流:直接与数据源相连。
- 处理流:在节点流上再套接一层,对一个已知流的连接和封装,构造方法带一个其他流对象作参数,通过所封装的流的功能调用实现数据读写。一个流对象经过其他流的多次包装,称为流的连接。
2.基本关系
红色标记的为与文件读写有关的类,带Buffered前缀的是处理流,会设置一个缓冲区,减少读写磁盘的次数。左边代表字符流,右边代表字节流。
3.例子
import java.io.*;public class Exam1 { public static void main(String[] args) throws IOException { String filename ="file"+File.separator+"test1.txt"; String outputfile ="file"+File.separator+"output.txt"; fileInpputStream(filename); fileOutputStream(); bufferedInputStream(filename); bufferedOutputStream(filename,outputfile); readFileByChars(filename); writeByFileReader(outputfile); readByBufferedReader(filename); writeByBufferedReader(outputfile); } /** * 字节流:FileInputStream FileOutputStream */ public static void fileInpputStream(String fileName) { // 一般先创建file对象 FileInputStream fileInput = null; try { File file = new File(fileName); if (!file.exists()) { file.createNewFile(); } byte[] buffer = new byte[1024]; fileInput = new FileInputStream(file); int byteread = 0; // byteread表示一次读取到buffers中的数量。 while ((byteread = fileInput.read(buffer)) != -1) { System.out.write(buffer, 0, byteread); } } catch (Exception e) { // TODO: handle exception } finally { try { if (fileInput != null) { fileInput.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void fileOutputStream() { FileOutputStream fop = null; File file; String content = "fileOutputStream"; try { file = new File("file"+File.separator+"test1.txt"); fop = new FileOutputStream(file,true); if (!file.exists()) { file.createNewFile(); } byte[] contentInBytes = content.getBytes(); fop.write(contentInBytes); fop.flush(); fop.close(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (fop != null) { fop.close(); } } catch (IOException e) { e.printStackTrace(); } } } /** * 缓冲字节流:BufferedInputStream * @throws IOException */ public static void bufferedInputStream(String filename)throws IOException { File file = new File(filename); FileInputStream fis = new FileInputStream(file); BufferedInputStream bis = new BufferedInputStream(fis); byte[] contents = new byte[1024]; int byteRead = 0; String strFileContents; try { while((byteRead = bis.read(contents)) != -1){ strFileContents = new String(contents,0,byteRead); System.out.println(strFileContents); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } bis.close(); } /** * 缓冲字节流:BufferedOutputStream * @throws IOException */ public static void bufferedOutputStream(String filename,String outputfile) throws IOException { BufferedInputStream bis = new BufferedInputStream(new FileInputStream(filename)); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(outputfile)); int i; do { i = bis.read(); if (i != -1) { bos.write(i); } } while (i != -1); bis.close(); bos.close(); } /** * 字符流:FileReader */ public static void readFileByChars(String fileName) { FileReader reader = null; System.out.print("FileReader:"); try { File file = new File(fileName); if (!file.exists()) { file.createNewFile(); } reader = new FileReader(file); char[] buffer = new char[1024]; int charread = 0; while ((charread = reader.read(buffer)) != -1) { System.out.print(buffer); } } catch (IOException e) { // TODO: handle exception } finally { try { if (reader != null) { reader.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } /** * 字符流:FileWriter */ public static void writeByFileReader(String output) { try { String data = " This content will append to the end of the file"; File file = new File(output); if (!file.exists()) { file.createNewFile(); } FileWriter fileWritter = new FileWriter(file.getName(), true); fileWritter.write(data); fileWritter.close(); } catch (IOException e) { e.printStackTrace(); } } /** 缓冲字符流 BufferedReader BufferedWriter * * @param fileName */ public static void readByBufferedReader(String fileName) { System.out.println("BufferedReader:"); try { File file = new File(fileName); // 读取文件,并且以utf-8的形式写出去 BufferedReader bufread; String read; bufread = new BufferedReader(new FileReader(file)); while ((read = bufread.readLine()) != null) { System.out.println(read); } bufread.close(); } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } } public static void writeByBufferedReader(String output) { try { String content = "This is the content to write into file"; File file = new File(output); if (!file.exists()) { file.createNewFile(); } FileWriter fw = new FileWriter(file, true); BufferedWriter bw = new BufferedWriter(fw); bw.write(content); bw.flush(); bw.close(); } catch (IOException e) { e.printStackTrace(); } }}
0 0
- java 读写ini文件
- java读写文件
- Java读写文件方法
- java 读写属性文件
- JAVA同时读写文件
- java 文件读写
- java文件读写
- JAVA IO读写文件
- java读写磁盘文件
- Java gzip文件读写
- Java读写Zip文件
- java读写文件
- java读写文件大全
- java 读写 ini 文件
- JAVA 文件读写
- java 读写文件大全
- java 读写文件大全
- java文件读写
- Java终止一个已启动的线程
- C语言链表学习笔记
- POJ 1556 The Doors【单源最短+线段相交】
- ueditor上传文件到七牛云坑爹录
- Fedora安装Chrome浏览器
- java文件读写
- 【Java开发手册之编程规约(七)】控制语句
- mac系统如何生成SSH key与GitHub通信
- Suggestion: add 'tools:replace="android:label"' to <application> element at AndroidManifest.xml:28:5
- Java处理控制台输入的长度可变的数组数据
- MyEclipse 下新建Servlet后,对应的xml文件直接报错的解决办法
- ORALCE10.2.0的BUG
- ACM-熄灯问题
- hadoop执行hdfs namenode -bootstrapStandby报错FATAL ha.BootstrapStandby的解决方法