java文件流的操作


前言

本专栏为【底层库】,主要介绍编程过程中 通用函数。我们将这些通用固化的源码,进行重写、封装、拓展,再进行单元测试、集成测试、beta测试,最终形成通用化模板,这里我们称为“底层库”。

作为研发人员的你,并不需要花大量时间,研究“底层库”的含义,及“底层库”的实现方法。你只需要几行调用代码,就可以解决项目上碰到的难题。而底层库使用方法,本专栏均有详细介绍,也有项目应用场景。

底层库已实现功能:MySQL脚本构建器、MySQL数据库访问操作、参数配置文件读写、加解密算法、日志记录、HTTP通信、Socket通信、API前后端交互、邮件发送、文件操作、配置参数存储、Excel导入导出、CSV和DataTable转换、压缩解压、自动编号、Session操作等。

本专栏会持续更新,不断优化【底层库】,大家有任何问题,可以私信我。本专栏之间关联性较强(我会使用到某些底层库,某些文章可能忽略介绍),如果您对本专栏感兴趣,欢迎关注,我将带你用最简洁的代码,实现最复杂的功能。

一、底层库介绍

java文件流的操作

二、底层库源码

创建类TransStreamDemo.java,复制以下代码。

package sowell.fileOperation.FileStreamDemo;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;

/*
*文件操作的主要的类和方法总结:
*输入流:
*   in1, InputStream
*       创建对象 InputStream in = System.in;
*       InputStream in = new FileInputStream(fileName);
*   in2,    InputStreamReader  没有readLine()方法
*           主要方法:
*                 read()读取单个字符,一个汉字也为一个字符。
*                 read(char[] cbuf)将字符读入数组。
*                 close().关闭此流和相关联资源。
*   in3,    BufferedReader     有read(),readLine()方法。
*
*输出流:    
*   out1,   OutputStream
*           创建对象 OutputStream out = System.out;
*           OutputStream out = new FileOutputStream(new File(pathname));
*   out2,   OutputStreamWriter  
*           主要方法:
*                write(int c)//写入单个字符。
*                write(char[] cbuf,int off,int len)//写入数组的某一部分
*                write(String str,int off,int len)//写入字符串烦人某一部分。
*                flush();//刷新该流中的缓冲。
*                close();
*   out3,   BufferedWriteer     有Write(int ch),newLine()方法。
*  
*          
*/  
public class TransStreamDemo {
    
    

    public static void main(String[] args) throws IOException {
    
      
        transReadByBuf();
     transWriteNoBuf();  
    }  
  
public static void transReadNoBuf() throws IOException{
    
    
// 不使用缓冲区读取文件
String fileName = "D:\\pro\\a.txt";
// 读取文件的数据,保存为字节流
InputStream in = new FileInputStream(new File(fileName));
// 将字节流转换为字符流
InputStreamReader isr = new InputStreamReader(in);
char []cha = new char[1024];
int len = isr.read(cha);
System.out.println(new String(cha,0,len));
isr.close();
}

public static void transReadByBuf() throws IOException{
    
    
// 使用缓冲区可以使用缓冲区对象read()和readLine()方法
String fileName = "D:\\pro\\a.txt";
InputStream in = new FileInputStream(fileName);
InputStreamReader isr = new InputStreamReader(in);
BufferedReader bufr = new BufferedReader(isr);
String line = null;
while ((line = bufr.readLine()) != null) {
    
    
System.out.println(line);
}
isr.close();
}
  


public static void transWriteNoBuf() throws IOException {
    
    
String fileName = "D:\\pro\\a.txt";
// 字节流
OutputStream out = new FileOutputStream(new File(fileName));
// 字符流
OutputStreamWriter osw = new OutputStreamWriter(out);
String str = "我一定能成为优秀的架构师";
osw.write(str);
// 将字符流中的缓冲数据刷新到目的地中去
osw.flush();
osw.close();
}

public static void transWriteByBuf() throws IOException {
    
      
String fileName = "D:\\pro\\a.txt";
OutputStream out = new FileOutputStream(new File(fileName));//打印到文件。  
    OutputStreamWriter osw = new OutputStreamWriter(out);//输出  
    BufferedWriter bufw = new BufferedWriter(osw);//缓冲
String str = "你好吗?\r\n我很好!";//你好吗?  
bufw.write(str);  
bufw.flush();  
bufw.close();  
}  

}  

三、调用方法

后期补充

四、项目样例

后期补充

猜你喜欢

转载自blog.csdn.net/youcheng_ge/article/details/129397835