结点流:直接对File类进行操作的文件流

package stream;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException; import org.junit.jupiter.api.Test; /*
* 流的体系结构: 抽象基类 节点流(或文件流) 缓冲流(处理流的一种)
* 字节输入流 InputStream FileInputStream BufferedInputStream
* 字节输出流 OutputStream FileOutputStream BufferedOutputStream
* 字符输入流 Reader FileReader BufferedReader
* 字符输出流 Writer FileWriter BufferedWriter
*
* 字符流只能处理字符,字节流能处理图片,二进制文件
* */
public class FileReaderWriterTest { @Test
public void test() throws IOException {
//1.实例化File类的对象
//2.提供具体的流
FileReader fr = null;
try {
File file = new File("hello .txt");
System.out.println(file.getAbsolutePath()); File file1 = new File("C:\\Users\\ASUS\\Desktop\\JAVAEE\\practice\\IO_FIle\\hello.txt");
System.out.println(file1.getAbsolutePath()); fr = new FileReader(file); //3.数据的读入:
//read()方法:return一个读入的字符,如果读到结尾则输出-1
int data;
while((data = fr.read())!=-1)
System.out.println((char)data);
} catch (Exception e) {
e.printStackTrace();
}
finally {
//4.流的关闭操作
try {
if(fr != null)
fr.close();
} catch (Exception e) {
e.printStackTrace();
}
}
} //对read()操作升级:使用read的重载方法
@Test
public void testFileReader1() {
//2.FileReader流的实例化
FileReader fr = null;
try {
//1.File
File file = new File("hello.txt");
fr = new FileReader(file);
//3.读入的操作
//read(buf):返回每次读入buf的字符的个数,如果达到文件尾,返回-1
char [] buf = new char[5];
int len;
while((len = fr.read(buf)) != -1) {
String s = new String(buf,0,len);
System.out.println(s);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
try {
//4.资源的关闭
if(fr!=null)
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} /*
* 输出操作:对应的File可以不存在的
* 如果不存在,在输出的过程中会自动创建此文件
* 如果存在,则会覆盖此文件
* 但是可以增加第二个参数 true 进行追加
*/
@Test
public void testFileWriter() {
FileWriter fw = null;
try {
//1.提出File类的对象,指明写出到的文件
File file = new File("hello1.txt");
//2.提供FileWriter的对象,用于数据的写出
fw = new FileWriter(file);
//3.写出的操作
fw.write("i have a dream.\n");
fw.write("you have a dream too");
} catch (Exception e) {
e.printStackTrace();
}
finally {
//4.关闭流
try {
if(fw != null)
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} /*
* 进行文件复制
* */
@Test
public void testFileReaderFileWriter() {
FileReader fr = null;
FileWriter fw = null;
try {
File sfile = new File("hello.txt");
File ttfile = new File("hello2.txt"); fr = new FileReader(sfile);
fw = new FileWriter(ttfile); char [] buf = new char[5];
int len;
while((len = fr.read(buf))!=-1) {
fw.write(buf,0,len);
}
} catch (Exception e) {
e.printStackTrace();
}
finally {
//4.关闭资源
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
} try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

包装流:用来修饰节点流

缓冲流加速

package stream;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; import org.junit.jupiter.api.Test; /*
* 1.缓冲流
* BufferedInputStream
* BufferedOutputStream
* BufferedReader
* BufferedWriter
*
* 2.作用:提高流的读取写入速度
*
* */ public class BufferedTest { /*
* 实现非文本文件的赋值
* */
@Test
public void BufferedStreamTest(){
BufferedInputStream brs = null;
BufferedOutputStream bos = null;
try {
File sfile = new File("zsben.jpg");
File tfile = new File("zsben3.jpg"); FileInputStream fis = new FileInputStream(sfile);
FileOutputStream fos = new FileOutputStream(tfile); brs = new BufferedInputStream(fis);
bos = new BufferedOutputStream(fos); byte[] buffer = new byte[10];
int len;
while((len = brs.read(buffer))!=-1) {
bos.write(buffer,0,len);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
try {
//关闭外层流的同时, 内层流也会自动被关闭
brs.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
bos.close();
} catch (Exception e) {
e.printStackTrace();
}
} }
}

转换流进行编码和解码

package stream;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException; import org.junit.jupiter.api.Test; /*
* 处理流之二:转换流
* InputStreamWriter:字节输入流->字符输入流
* OutputStreamWriter:字符输出流->字节输出流
* 字节->字符 (97->'a'):即一个解码过程
* 字符->字节 ('a'->97):即一个编码过程
* */ public class InputStreamReaderITest {
@Test
public void test1() throws IOException {
//第二个参数:file保存时使用的编码方式
InputStreamReader isr= null;
try {
File file = new File("hello.txt");
FileInputStream fis = new FileInputStream(file); isr = new InputStreamReader(fis,"gbk");//原来使用gbk编码存的,这儿换成UTF-8就会使中文字符乱码 char [] buf = new char[20];
int len;
while((len = isr.read(buf))!=-1) { String s = new String(buf,0,len);
System.out.println(s); }
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} isr.close();
}
}

最新文章

  1. 页面制作之HTML
  2. spark 加载文件
  3. JQuery-EasyUI与EXTjs有什么区别?
  4. Android圆角矩形创建工具RoundRect类
  5. UVa 1585 Score --- 水题
  6. 我是如何理解Java抽象类和接口的
  7. 实现Android 版网页快照功能
  8. Ello讲述Haar人脸检测:易懂、很详细、值得围观
  9. POJ 1182 :食物链(并查集)
  10. Quartz的misfire处理机制分析
  11. 023_supervisorctl管理服务注意事项
  12. JS 获取图片标签和所有的图片中的src的正则表达式
  13. 剑指offer(12)数值的整数次方
  14. 第六届蓝桥杯省赛 java三羊献瑞
  15. (转)Java中equals和==、hashcode的区别
  16. 轻松解决oracle11g 空表不能exp导出的问题。
  17. ASP.NETCore学习记录(二) —— ASP.NET Core 中间件
  18. 弹指之间 -- Slow Soul
  19. 表访问方式---->通过ROWID访问表(table access by ROWID)
  20. mysql加密函数

热门文章

  1. JS-生成器函数(function 星号)的暂停和恢复(yield)
  2. Netty精进01
  3. mysql 开放远程连接权限连不上
  4. maven将依赖第三方包打包(package)到jar中
  5. 基于Apache搭建HTTP HTTPS
  6. 20190823 尚硅谷MySQL核心技术
  7. 线上服务器CPU100%排查
  8. BZOJ 1588 (treap)
  9. 13、numpy——算术函数
  10. docker ssh连接不上