黑马程序员-探究字节流五(其他流)
来源:互联网 发布:linux常用命令详解 编辑:程序博客网 时间:2024/06/02 07:03
------ <a target="blank">android培训</a>、<a target="blank">java培训</a>、期待与您交流! -------
package it.heima.mylog;
import java.io.File;
public class OtherStream {
/**
* 关键词:递归,File对象的操作,properties集合,自定义load功能。
* 递归: 函数自身直接或间接地调用到了自身就是递归。
* 一个功能在被重复使用,并且每次使用时,参与运算结果和上一次调用有关练,就可以用递归来解决问题。
* 注意的几点:
* 递归一定要明确条件。否则容易栈溢出。就是程序死循环。 还有就是注意递归的次数。
* File对象封装一个文件后,想要删除,必须从里往外删。就雪要进行深度遍历。
*/
/* 删一个文件夹目录 */
public static void main(String[] args) {
File dir = new File("e:\\demodir");
removeDir(dir);
}
public static void removeDir(File dir) {
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
removeDir(file);// 开始递归啦
} else {
System.out.println(file + ":" + file.delete());// 删除文件
}
}
System.out.println(dir + ":" + dir.delete());
}
}
/**
* 关键词:打印流PrintStream,PrintWriter;集合Sequence。
*
* public class PrintStream extends FilterOutputStream 字节打印流
* 1,提供打印方法,可以对多种数据类型值进行打印。并保持数据的表现形式。
* 2,它不抛任何IOException异常。
* 3,构造函数,可以接收三种类型的值。字符串路径,File对象,字节输出流。
* 4,PrintStream打印的所有字符都使用平台默认字符编码转换为字节。
*
* PrintStream out = new PrintStream("print.txt");
* out.print(97);将97先变成字符保持原样将数据打印到目的地。 out.writer(97);只写最低8位。
*
* public class PrintWriter extends Writer 字符打印流
* 构造函数参数可以为:字符串路劲,File对象,字节输出流,字符输出流。 PrintWriter的构造函数参数比PrintStream多一个字符输出流。
*
* BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
* PrintWriter out = new PrintWriter(new FileWriter("out.txt"),true);true为流自动刷新
* String line = new null; while((line = bufr.readLine()) != null){
* if("over".equals(line)) break; out.println(line.toUpperCase()); out.flush();
* } out.close(); bufr.close();
*
* public class SequenceInputS tream extends InputStream 字节输出流集合
* 构造函数参数:
* 1,Enumeration<? extends InputStream> en
* 2,还可以传递两个InputStream
*
* 需求:将1.txt,2.txt,3.txt文件中的内容合并到一个文件中。
* ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();
* for(int x=1; x<=3; x++){ al.add(new FileInputStream(x+".txt")); }
* 用集合的方法获取枚举器
* Enumeration<FileInputStream> en = Collections.enumeration(al);
* SequenceInputStream sis = new SequenceInputStream(en);
*
* FileOutputStream fos = new FileOuptutStream("1234.txt");
* byte[] buf = new byte[1024];
* int len = 0; while((len = sis.read(buf)) != -1){fos.writer(buf,0,len) }
* fos.close(); sis.close();
*
* 每日词汇: JDBC Java Data Base Connectivity 数据库连接 SE Standard Edition 标准 EE
* Enterprise Edition 企业 ME Micro Edition 微xing
* Properties集合 隶属于Map旗下的Hashtable。
* Properties集合的特点: 该集合中的键值都是字符串类型的。 集合的数据可以保存到流中,或者从流中读取。
* 通常该集合用于操作以键值对形式存在的配置文件。
* 模拟load功能: 太晚了,不搞了,明天白天写。记得模拟一个load功能。 就是对已有的配置文件中的信息进行修改。 待续。。。
*/
/**
关键词:RandomAccessFile随机读取流,PipedInputStream管道流,DataOutput,ByteArrayInputStream。。。Other
RandomAccessFile类
1,属于Object,不是IO体系中的子类。
2,非常牛的一个类,既能读,也能写。
3,其实它对象的内部就是一个大型的Byte数组,并可以通过指针操作数组中的元素。
4,但是有局限性,该对象的源或目的只能是文件,在构造函数参数就可以爱看出来。
5,使用对象写入信息时,如果目的文件不存在则创建,如果文件存在就不创建,和其他流不同,其他流是一缕覆盖。
6,RandomAccessFile类的对象还有其他应用,因为可以通过指针操作数组元素的读写,一般结合多线程技术,实现断点连续下载的功能。迅雷下载就是应用的这类对象。
管道流
是可以把输入流和输出流相关联起来的。就像管道一样。一般和多线程技术相结合。因为他的读取流和输入流是两个线程,
为了防止死锁的情况发生。
后面的类看名字就可以判断出操作的数据类型。
类有点多,起码要了解,IO包基本就搞完了,后面都是一些加强类,装饰设计模式完成的。
还有一点就是编码和解码
数据发到Tomcat都是字节数组,是通过GBK编码得到的,而Tomcat服务器是默认的ISO8895-1的解码表。要先搞清楚
*/
------ <a target="blank">android培训</a>、<a target="blank">java培训</a>、期待与您交流! -------
0 0
- 黑马程序员-探究字节流五(其他流)
- 黑马程序员-探究字节流二
- 黑马程序员-探究字节流三
- 黑马程序员-探究字节流四(应用文件切割合并)
- 黑马程序员——Java中IO流(字节流 字符流 其他流 )
- 黑马程序员--字节流
- 黑马程序员--字节流
- 黑马程序员----IO流(其他)
- 黑马程序员—其他流
- 黑马程序员---IO其他流
- 黑马程序员--IO其他流
- 黑马程序员_字节流
- 黑马程序员---IO--字节流
- 黑马程序员__IO(字节流)
- 黑马程序员_字节流
- 黑马程序员_83_IO字节流
- 黑马程序员-day20-字节流
- 黑马程序员-探究字符流一
- 安装conkeror--emacs风格的web浏览器
- call()方法和属性的继承
- canvas动画效果
- JAVA i=i++的问题
- Emacs学习笔记(5):更有效率的编辑
- 黑马程序员-探究字节流五(其他流)
- 快奔3的人了
- 网站重构——轻量化的网站架构设计二,使用restify生成RESTful接口
- PHP,CMS学员招聘 软件联盟QQ群24799012
- Python初学时的一个小错误:IndentationError: expected an indented block
- 黑马程序员-GUI复习
- pat 1067
- ubuntu-winscp连接本地虚拟机linux-virtualbox
- 第二周的算法作业