Java I/O
来源:互联网 发布:空间数据质量控制 编辑:程序博客网 时间:2024/06/10 18:39
本文出自:http://blog.csdn.net/dt235201314/article/details/70841306
欢迎Star(updating):https://github.com/JinBoy23520/CoderToDeveloperByTCLer
一丶概述
最近几周的雏鹰飞翔计划的内容是:Java网络编程 Java IO 文件解析。分开写,本篇介绍Java I/O。
内容:
1.Java I/O 知识图谱
2.Java I/O 常见类使用(File FileOutputStream FileInputStream)
3.Demo 实现图片,txt文件复制
4.延伸学习: Android 记事本的实现 Java I/O 的工作机制
二丶正文
1.Java I/O 图谱
普通版:
入门到放弃版:
这里不对所有类做详解,用到是再参考API
2.Java I/O 常见类使用
File类:
/** * <pre> * author : JinBiao * CSDN : http://my.csdn.net/DT235201314 * time : 2017/05/02 * desc : 功能: File类的功能 * 1:创建一个文件流,判断文件是否存在如果存不存在就创建新文件,前提必须在文件所在的文件夹必须存在 * 2:创建文件夹 * 3:把文件夹下面的的文件的信息显示出来,或者递归从文件夹下面找到 * version: 1.0 * </pre> */public class FileDemo { public static void main(String[] args) { // TODO Auto-generated method stub //创建一个文件对象// File f = new File("C:/Users/Administrator/Desktop/aa.txt");// //得到文件路径// System.out.println("文件路径:" + f.getAbsolutePath());// //得到文件的大小// System.out.println("文件大小" + f.length());// //判断文件是否可读// System.out.println("可读" + f.canRead()); // 判断文件是否存在// File f=new File("C:/Users/Administrator/Desktop/aa.txt");// if(!f.exists())// {// //创建// System.out.println("创建文件");// try {// f.createNewFile();// } catch (IOException e) {// // TODO Auto-generated catch block// e.printStackTrace();// }// }else// {// System.out.println("文件已经存在");// } //判断文件夹是否存在// File f=new File("C:/Users/Administrator/Desktop/ff");// if(f.isDirectory()) //如果文件夹存在// {// System.out.println("文件夹已经存在");// }else{// //创建文件夹// f.mkdir();// } //列出一个文件夹下面所有的文件 File f = new File("C:/Users/Administrator/Desktop"); if (f.isDirectory()) { //创建一个用于存放文件名字的数组 File lists[] = f.listFiles(); //打印文件夹下面的文件名字 for (int i = 0; i < lists.length; i++) { //得到文件的名字 System.out.println("文件名:" + lists[i].getName()); } } }}前面演示创建文件,没注释的演示显示我的桌面文件运行结果:
Demo2 读取文件
/** * <pre> * author : JinBiao * CSDN : http://my.csdn.net/DT235201314 * time : 2017/05/02 * desc : 演示FileInputStream * 1:把文件读入到计算机内存中 * version: 1.0 * </pre> */public class FileInputStreamDemo { public static void main(String[] args) { // TODO Auto-generated method stub File f = new File("C:/Users/Administrator/Desktop/aa.txt"); FileInputStream fis = null; //因为File没有读功能,所以需要一个InputStream try { fis = new FileInputStream(f); //定义一个字节数组 byte[] bytes = new byte[1024]; //循环读取 int n = 0; //读完返回 -1 while ((n = fis.read(bytes)) != -1) { //把字节数组中的内容转换成字符串 String s = new String(bytes, 0, n); //输出字符串中的内容 System.out.println(s); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { //关闭文件流必须关闭 try { fis.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}Demo3 创建文件并输入内容
/** * <pre> * author : JinBiao * CSDN : http://my.csdn.net/DT235201314 * time : 2017/05/02 * desc : 演示 FileOutputStream * 1:创建文件并输入内容切记一定要先判断文件是否已经存在,否则会把原有的文件覆盖 * version: 1.0 * </pre> */public class FileOutputStreamDemo { public static void main(String[] args) { // TODO Auto-generated method stub File f = new File("C:/Users/Administrator/Desktop/ss.txt"); FileOutputStream fos = null; if (!f.exists()) { try { fos = new FileOutputStream(f); String s = "老桑,向世界问好\r\n"; String s1 = "美女,向世界问好"; //定义字节数组 // byte [] bytes=new byte[1024]; fos.write(s.getBytes()); fos.write(s1.getBytes()); } catch (Exception e) { // TODO: handle exception } finally { try { fos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } else { System.out.println("文件已经存在"); } }}3.Demo 实现图片,txt文件复制
/** * <pre> * author : JinBiao * CSDN : http://my.csdn.net/DT235201314 * time : 2017/05/02 * desc : 复制照片 * version: 1.0 * </pre> */public class CopyPicture { public static void main(String[] args) { // TODO Auto-generated method stub //创建输入流 FileInputStream fis = null; //创建输出流 FileOutputStream fos = null; try { //用于图片也可以 fis = new FileInputStream("C:/Users/Administrator/Desktop/a.jpg"); fos = new FileOutputStream("e:\\a.jpg"); // 用于文本文件也可以// fis = new FileInputStream("C:/Users/Administrator/Desktop/ss.txt");// fos = new FileOutputStream("e:\\ss.txt"); byte buf[] = new byte[1024]; //循环读取 int n = 0;//记录实际读取到的字节数 //循环读取 while ((n = fis.read(buf)) != -1) { //输出到指定文件 fos.write(buf); System.out.println("文件已经完成复制"); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { //关闭文件流 try { fis.close(); fos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}
运行到这里学会了创建输入文件,读取文件,还会复制图片,想一想,这样是不是就可以做一个类似记事本功能的程序呢?当然原理是类似的
4.延伸学习: Android 记事本的实现 Java I/O 的工作机制
介于时间原因没有写Android 记事本程序,就直接在网上找了个比较好的,大家可以看看学习一下
感情上觉得这个记事本可用,简单精致又没有广告,感觉还不错
打开程序会发现,关于数据显示读取,用的是SQLite,当然SQLite本身的源码用到的也是Java I/O,封装好了,我们直接用就可以了
这里不解读源码,到后面关于SQLite的学习的时候再做解释学习
延伸阅读:
Java I/O :http://blog.csdn.net/suifeng3051/article/details/48344587
有文字说明增强理解,后面还有对NIO的一些介绍
Java I/O 的工作机制: https://www.ibm.com/developerworks/cn/java/j-lo-javaio/
对I/O架构机制的图文解读文章
Java I/O 操作: http://blog.csdn.net/deram_boy/article/details/51191425
对我没有提到的其他类的一些应用补充
Java I/O面试题 :http://blog.csdn.net/bubble1210/article/details/50839845
我的相关文章及补充学习:
Java 序列化 :http://blog.csdn.net/dt235201314/article/details/52124007
Socket 编程 :(后面网络编程时会说到再添加链接)
Java I/O 就整理,希望对大家有所帮助
- Java I/O系统----------- 标准I/O
- Socket Java I/O Socket I/O
- JAVA I/O
- 复习java: I/O
- Java I/O 体系
- java I/O流
- Java 标准I/O
- Java I/O系统
- Java I/O
- JAVA I/O--(2)
- JAVA I/O--(3)
- JAVA I/O--(4)
- java i/o包
- JAVA I/O (一)
- java I/O流
- JAVA I/O操作
- Java I/O原理
- JAVA的I/O
- Java基础阶段总结
- css笔记
- 写sql语句的经验之谈 百万数据查询优化技巧三十则
- APP安全报告第十二期:阅读APP存在泄漏隐私数据的风险,你不担心么?
- 精通gulp常用插件
- Java I/O
- Qt实现天气预报与PM2.5监测系统(10)系统设置
- Linux传文件:本机传其他机器和其他机器传本机
- eaysui-tabs自适应宽度的问题
- 基本数据类型作业
- Zigbee和Wi-Fi的干扰和共存
- javascript笔记
- Ubuntu虚拟机安装、扩容
- ffmpeg 经典介绍