Java的知识点28——文件编码、IO流的实例
文件编码 字符 ——》字节 (编码 encode) 字节 ——》 字符(解码 decode)
节点流 处理流
package cn.dym;import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;/*** 1.创建流* 2.选择流* 3.操作* 4.释放资源* @author Administrator**/
public class IOTest01 {public static void main(String[] args) {//1.创建源File src=new File("abc.txt");//2.选择流try {InputStream is=new FileInputStream(src);//3.操作(读取)int data1=is.read(); //第一个数据 hint data2=is.read(); //第二个数据 eint data3=is.read(); //第三个数据 lint data4=is.read(); //第四个数据 //不是数据,文件末尾返回-1System.out.println((char)data1);System.out.println((char)data2);System.out.println((char)data3);System.out.println(data4);//4.释放资源is.close();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}
上面的写法不好,标准的写法如下:
package cn.dym;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
/*** 标准的写法* 1.创建流* 2.选择流* 3.操作* 4.释放资源* @author Administrator**/
public class IOTest02 {public static void main(String[] args) {//1.创建源File src=new File("abc.txt");//2.选择流InputStream is=null;try {is=new FileInputStream(src);//3.操作(读取)int temp;while((temp=is.read())!=-1) {System.out.print((char)temp);}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {//4.释放资源try {if(null!=is) {is.close();} } catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
}
分段读取
package cn.dym;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
/*** 分段读取* 1.创建流* 2.选择流* 3.操作* 4.释放资源* @author Administrator**/
public class IOTest03 {public static void main(String[] args) {//1.创建源File src=new File("abc.txt");//2.选择流InputStream is=null;try {is=new FileInputStream(src);//3.操作(分段读取)byte[] flush=new byte[1024]; //缓冲容器int len=-1;while((len=is.read(flush))!=-1) {// 字节数组 ————》 字符串 (解码)String str=new String(flush,0,len);System.out.println(str);}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {//4.释放资源try {if(null!=is) {is.close();} } catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
}
字节输出流 —— 文件字节输出流
package cn.dym;import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;/*** 文件字节输出流* 1.创建源* 2.选择流* 3.操作(写出内容)* 4.释放资源* @author Administrator**/
public class IOTest04 {public static void main(String [] args) {
// 1.创建源File dest=new File("dest.txt");
// 2.选择流OutputStream os=null;try{//os=new FileOutputStream(dest,true); //直接在文件中追加//os=new FileOutputStream(dest,false); // 先删除文件原来的内容,在把新的内容写进文件中os=new FileOutputStream(dest,true);// 3.操作(写出内容)String msg="IO is so easy\r\n";byte[] datas=msg.getBytes(); // 字符串——》字节数组(编码)os.write(datas, 0, datas.length); os.flush();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {//4.释放资源if(null!=os) {try {os.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}} }
}
文件的拷贝
package cn.dym;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/*** 文件拷贝:文件字节输入、输出流*/
public class Copy {public static void main(String[] args) {copy("D:/java/workspace/IO_study02/src/cn/dym/Copy.java","copy.txt");}/*** 文件的拷贝 * @param srcPath* @param destPath*/public static void copy(String srcPath,String destPath) {//1、创建源File src = new File(srcPath); //源头File dest = new File(destPath);//目的地//2、选择流InputStream is =null;OutputStream os =null;try {is =new FileInputStream(src);os = new FileOutputStream(dest); //3、操作 (分段读取)byte[] flush = new byte[1024]; //缓冲容器int len = -1; //接收长度while((len=is.read(flush))!=-1) {os.write(flush,0,len); //分段写出} os.flush();}catch(FileNotFoundException e) { e.printStackTrace();}catch (IOException e) {e.printStackTrace();}finally{//4、释放资源 分别关闭 先打开的后关闭try {if (null != os) {os.close();} } catch (IOException e) {e.printStackTrace();}try {if(null!=is) {is.close();}} catch (IOException e) {e.printStackTrace();}}}
}
Java的知识点28——文件编码、IO流的实例相关推荐
- Java面试知识点:File、IO流
问题:Java面试知识点:File.IO流 答案: 1.File listFiles方法注意事项: • 当调用者不存在时,返回null • 当调用者是一个文件时,返回null • 当调用者是一个空文件 ...
- 2018.4.13 用java配置/生成Xml文件 结合IO流知识点
自己创建本地文件Hello.txt 里面有数据 小明/23/增城/广东 小花/12/浦东/上海 StudentManager.java package com.lanqiao.dmeo7;import ...
- Java基础(七)——文件、IO流
文章目录 文件.IO流 1 流 2 BIO 3 NIO 4 AIO 文件.IO流 1 流 InputStream/Reader:所有的输入流的基类,前者是字节输入流,后者是字符输入流 OutputSt ...
- Java中的File类和IO流
Java中的File类和IO流 File类 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. File的分隔符 import java.io.Fi ...
- 『Java』文件与IO流
1. File类 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 实际存不存在无所谓,这里只是创建一个抽象表示 1.1 构造方法 下面示例项目根 ...
- java 写入文件流_Java实现文件写入——IO流
输入输出的重要性: 输入和输出功能是Java对程序处理数据能力的提高,Java以流的形式处理数据.流是一组有序的数据序列,根据操作的类型,分为输入流和输出流. 程序从输入流读取数据,向输出流写入数据. ...
- java之文件与IO流及序列化
目录 文件 java操作文件原理 File类 封装文件为File类对象 常用文件方法 File对象对文件进行操作 File对象对目录进行操作 IO流 IO流的分类 节点流与处理流 处理流特点 字节流与 ...
- java文件流写入文件_JAVA IO流编程 实现文件的写入、写出以及拷贝
一.流的概念 流:数据在数据源(文件)和程序(内存)之间经历的路径. 输入流:数据从数据源(文件)到程序(内存)的路径. 输出流:数据从程序(内存)到数据源(文件)的路径. 以内存为参照,如果数据向内 ...
- Java实现文件写入——IO流(输入输出流详解)
输入输出的重要性: 输入和输出功能是Java对程序处理数据能力的提高,Java以流的形式处理数据.流是一组有序的数据序列,根据操作的类型,分为输入流和输出流. 程序从输入流读取数据,向输出流写入数据. ...
最新文章
- Web开发常见的软件架构
- $NF和 NF的区别
- python将列表横着输出来
- Python中的map和reduce函数简介
- Python Django HttpResponse响应对象
- 【Python】RotatingFileHandler:log日志文件自定义大小+滚动输出
- OSPF动态路由协议入门简介
- 【安卓开发】Android初级开发(okhttp3发送带header与带参数的GET请求)
- 95-872-060-源码-CEP-匹配事件提取
- 中国碳酸锰(CAS+598-62-9)市场趋势报告、技术动态创新及市场预测
- matlab preparets,请问吧里有大神做过MATLAB时间序列神经网络(NARX)吗?
- java adt官网下载_android adt下载
- 数据结构之SWUSTOJ1038: 顺序表中重复数据的删除
- 微信小程序图片懒加载插件
- Codeforces Round #643 (Div. 2)-C. Count Triangles(差分,前缀和)(避免标题重复率的小括号)
- jboot-admin 搭建过程
- 荣耀首批老机型今日下午 4 点开启鸿蒙 HarmonyOS 2 内测
- 怎么觉得自己越来越好看了
- iOS QRcode识别及相册图片二维码读取识别
- 计算机桌面用什么实木板好,这才叫实木桌面,教你怎么做出来,拿去不谢
热门文章
- 谷歌火狐浏览器限制的端口
- java selenium后报错Element not found in the cache元素定位要重新赋值之前的定义
- ios 三种颜色画笔和橡皮擦的画图板demo
- visual studio 2005占用cpu100% -_-...
- 专访蒋宇捷:技术管理者应具备哪些能力?
- JAVA-接口和抽象类的区别
- 360首席安全官谭晓生宣布离职
- 如何修改MySQL8.0.5以上版本root密码
- 准备好了?测试人员迟早会被要求测试包含区块链技术的解决方案
- WMI-Win32_baseboard 主板参数