Java I/O(一)

本文出自:http://blog.csdn.net/dt235201314/article/details/70841306

一丶概述

回头看了下对I/O的整理,例子偏简单,有必要新增系列文章

最近几周的雏鹰飞翔计划的内容是: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 图谱

普通版:

Java I/O(一)_第1张图片

入门到放弃版:

Java I/O(一)_第2张图片

这里不对所有类做详解,用到时再参考API

2.Java I/O 常见类使用

File类:

/**
 * 
 *     author : JinBiao
 *     CSDN : http://my.csdn.net/DT235201314
 *     time   : 2017/05/02
 *     desc   : 功能: File类的功能
 *              1:创建一个文件流,判断文件是否存在如果存不存在就创建新文件,前提必须在文件所在的文件夹必须存在
 *              2:创建文件夹
 *              3:把文件夹下面的的文件的信息显示出来,或者递归从文件夹下面找到
 *     version: 1.0
 * 
*/ 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()); } } } }
前面演示创建文件,没注释的演示显示我的桌面文件运行结果:

Java I/O(一)_第3张图片

Demo2 读取文件

/**
 * 
 *     author : JinBiao
 *     CSDN : http://my.csdn.net/DT235201314
 *     time   : 2017/05/02
 *     desc   :  演示FileInputStream
 *              1:把文件读入到计算机内存中
 *     version: 1.0
 * 
*/ 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 创建文件并输入内容
/**
 * 
 *     author : JinBiao
 *     CSDN : http://my.csdn.net/DT235201314
 *     time   : 2017/05/02
 *     desc   :  演示 FileOutputStream
 *              1:创建文件并输入内容切记一定要先判断文件是否已经存在,否则会把原有的文件覆盖
 *     version: 1.0
 * 
*/ 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文件复制

/**
 * 
 *     author : JinBiao
 *     CSDN : http://my.csdn.net/DT235201314
 *     time   : 2017/05/02
 *     desc   : 复制照片
 *     version: 1.0
 * 
*/ 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 记事本程序,就直接在网上找了个比较好的,大家可以看看学习一下

Java I/O(一)_第4张图片

感情上觉得这个记事本可用,简单精致又没有广告,感觉还不错

打开程序会发现,关于数据显示读取,用的是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 就整理,希望对大家有所帮助

写在最后

如果文章对你有帮助,欢迎点赞支持

代码下载:https://github.com/JinBoy23520/CoderToDeveloperByTCLer

不懂得地方,微信扫二维码提问


Java I/O(一)_第5张图片


你可能感兴趣的:(Java,TCL,雏鹰飞翔计划,·,Android,篇,java加强入门到精通)