io流

IO流之ZipInputStream和ZipOutputStream的认识及使用

折月煮酒 提交于 2019-12-05 17:41:26
转载 https://blog.csdn.net/weixin_39723544/article/details/80611810 工具类 import java.io.*;import java.util.zip.*;public class ZipUtils { /** * Default buff byte size * */ private static final int DEFAULT_BUFF_SIZE = 1024; /** * Default basedir value * */ private static final boolean DEFAULT_DIR = false; public static void decompress(String srcPath) throws Exception { decompress(new File(srcPath)); } public static void decompress(File srcFile) throws Exception { File baseFile = srcFile.getParentFile(); decompress(srcFile, baseFile); } public static void decompress(String srcPath, String destPath)

16 IO流(十四)——Object流 序列化与反序列化

别来无恙 提交于 2019-12-05 14:35:23
Object流、序列化与反序列化 Object流是将 可序列化的对象 进行序列化与反序列化的流。 可序列化的对象:使用关键字Serializable修饰,表示这个对象可以进行序列化与反序列化。 序列化:序列化即将对象转换为字节数组进行传输或出错。 反序列化:将含对象的字节数组转为对象。 就如我们的Data流一样,Data流保存的是基础数据类型,Object保存的是引用数据类型。 也与Data流一样,读取写入的顺序要保持一致。 需要注意的细节 Object流与Data流有好几个相似的方法: 反序列化时需要使用instanceOf判断类型是否相同在做转换。 可序列化的类中不需要序列化的数据用 transient修饰 来源: https://www.cnblogs.com/Scorpicat/p/11928287.html

java IO流

我怕爱的太早我们不能终老 提交于 2019-12-05 12:48:55
IO(Input Output)流 IO流用来处理设备之间的数据传输,对数据的操作是通过流的方式,Java用于操作流的对象都在IO包中。 完整IO流结构图如下: IO流分类 1. 处理的数据单位不同: (1)字符流 一次读入或读出是8位二进制。字节流处理单元为 1 个字节,操作字节和字节数组。 (2)字节流 一次读入或读出是16位二进制。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串(Java内用Unicode编码存储字符) 2.数据流方向不同: 输入流,输出流 3.功能不同(流是否直接与特定的地方(如磁盘、内存、设备等)相连): (1)节点流 节点流从一个特定的数据源读写数据。即节点流是直接操作文件,网络等的流,例如FileInputStream和FileOutputStream,他们直接从文件中读取或往文件中写入字节流。 (2)处理流 “连接”在已存在的流(节点流或处理流)之上通过对数据的处理为程序提供更为强大的读写功能,即是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader。处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。 java.io包提供的类 如下图所示: 来源: oschina 链接: https://my.oschina.net/u

Java中的IO流总结

半腔热情 提交于 2019-12-05 12:15:52
File文件和目录地址名类 三个构造方法 File(String path); File(String parent, String path); File(File parent,String path); 创建方法 createNewFile();//创建文件 mkdir();//创建单级目录 mkdirs();//创建多级目录 获取的方法: getPath(); //获得构造方法File(String path);中的路径 getAbsolutePath();//获取绝对路径 getName();//获取文件的名字 length(); // 获取文件的大小。 String[] list();//返回该目录下的子文件和子目录的名字到字符串数组 File[] listFiles();返回该目录下的子文件和子目录的名字到File数组 判断的方法: isDirectory();//是不是目录 isFile();//是不是文件 exists();//存在么 递归遍历文件夹。 递归复制单级目录。 递归复制多级目录。 字节流——字节输出流 : OutputStream 抽象类 FileOutputStream 实际输出字节的流 1: 续写 new FileOutputStream ("a.txt",true) BufferedOutputStream 实际输出字节的缓冲流 new

13 IO流(十)——BufferedReader/BufferedWriter 装饰流

元气小坏坏 提交于 2019-12-05 12:10:36
Buffered字符包装流 与Buffered字节装饰流一样,只不过是对字符流进行包装。 需要注意的地方 Buffered字符流在Reader与Writer上有两个新的方法:String readLine()与 void newLine() 所以Buffered字符流不能够使用多态,也就是:Writer w = new BufferedWriter(); 这样虽然不报错,但使用不了新的这两个方法。 构造方法 需要特别提到的一个构造其:BufferedWriter(Writer w,int sz) 它表示创建一个缓冲区大小为sz的缓冲字符输出流。 缓冲字符输入流同理。 案例实现 使用Buffered字符装饰流包装一个File字符流,copy文本文件。 import java.io.*; /** *BufferedReader与BufferedWriter *包装File字符流 *实现纯文本文件的拷贝 */ public class IOTest02 { public static void main(String[] args){ //文件 String srcPath = "a.txt";//文件源 String destPath = "a_cp.txt";//目的地 copy(srcPath,destPath); } public static void copy(String

java中IO流有哪些?

被刻印的时光 ゝ 提交于 2019-12-05 10:59:21
按数据流向:输入流和输出流 输入和输出都是从程序的角度来说的。 输入流:数据流向程序 输出流:数据从程序流出。 按处理单位:字节流和字符流 字节流:一次读入或读出是8位二进制 字符流:一次读入或读出是16位二进制 JDK 中后缀是 Stream 是字节流;后缀是 Reader,Writer 是字符流 按功能功能:节点流和处理流 节点流:直接与数据源相连,读入或写出 处理流:与节点流一块使用,在节点流的基础上,再套接一层 最根本的四大类:InputStream(字节输入流),OutputStream(字节输出流),Reader(字符输入流),Writer(字符输出流) 四大类的扩展,按处理单位区分 InputStream:FileInputStream、PipedInputStream、ByteArrayInputStream、BufferedInputstream、SequenceInputStream、DataInputStream、ObjectInputStream OutputStream:FileOutputStream、PipedOutputStream、ByteArrayOutputStream、BufferedOutputStream、DataOutputStream、ObjectOutputStream、PrintStream Reader:FileReader

12 IO流(九)——装饰流 BufferedInputStream/OutputStream

你说的曾经没有我的故事 提交于 2019-12-05 10:57:13
我们按功能可以将IO流分为节点流与处理流 节点流:可以直接从数据源或目的地读写数据 处理流(装饰流):不直接连接到数据源或目的地,是其他流(必须包含节点流)进行封装。目的主要是简化操作和提高性能。 Buffered流的引入 当我们使用节点流来传输数据时,节点流单次传输的数据太少,会频繁读写硬盘,这使得整体速度不高,就像蚂蚁搬家。 这时我们引入处理流Buffered流,就好像找来一辆卡车来搬家,单次运输的数据多了,访问硬盘的次数少了,速度得到提升。 copy文件示例 不引入Buffered流copy一个600m的文件所需要的时间 import java.io.*; public class IOTest01 { public static void main(String[] args) { //文件源 String src = "1.rar"; String dest = "1_cp.rar"; //计算copy花费的时间 long l1 = System.currentTimeMillis(); copy(src,dest); long l2 = System.currentTimeMillis(); long time = l2-l1; System.out.println(time); } public static void copy(String srcPath

IO流

…衆ロ難τιáo~ 提交于 2019-12-05 07:39:12
------------恢复内容开始------------ IO流概述 java中用于传输数据的工具。 IO流能干什么:在本地磁盘和网络上操作数据。 IO流的分类: (1)按数据流向分: ①输入流②输出流 (2)按操作方式分: ①字节流 以字节的形式操作数据 InputStream:字节输入流,以字节的形式读取数据。字节输入流的顶层抽象类 OutputStream:字节输出流,以字节的形式写出数据 ②字符流 以字符的形式操作数据 Reader :字符输入流 Writer:字符输出流 这四个类都是抽象类,在使用时要使用它们的子类 IO流体系:字符流:按字符读写数据的IO流:Reader:FileReader 普通字符输入流 BufferedReader 高效字符输入流 Writer:FileWriter 普通字符输出流 BufferedReader 高效字符输出流 字节流:InputStream:FileInputStream BufferedInputStream OutputStream:FileOutputStream BufferedOutputStream File类 一个File对象代表磁盘上的某个文件或文件夹 构造方法 : File(String pathname):根据字符串形式的路径来创建其对应的File对象 File(String parent,String

01 IO流(一)——File类

别来无恙 提交于 2019-12-05 04:02:05
1 API的使用方法 看继承 看常量、构造方法 看方法 2 File中的常量 static String separator不同的操作系统中,文件路径的分隔符有所不同,separator提供路径的分隔符的动态分隔。 例如:D:\java\jdk 在java中可表示为:String path = "D:\\java\\jdk"; (使用\\是因为java的转义机制,在java字符串中\\即为\) 推荐写为:String path = "D:"+File.separator+"java"+File.separator+"jdk"; 3 File的构造方法 3.1 File(String) 传入文件路径字符串,返回File实例。 3.2 File(String parent,String child) 将字符串1与字符串2拼接为一个新路径字符串传入,返回新的File实例。 3.3 File(File parent,String child) 将一个FIle对象parent的路径与字符串child拼接成一个新路径字符串传入,返回一个File实例。 3.4 FIle(URL url) 不解 来源: https://www.cnblogs.com/scopicat/p/11904462.html

IO流—其他流

你说的曾经没有我的故事 提交于 2019-12-05 00:50:49
内存操作流 这个流不关联任何文件,只能在内存中数据,自己在内存中维护着一个缓冲区,我们可以往他维护的缓冲区不断的写入数据,也可以从缓冲区中取出我们写入的数据 ByteArrayOutputStream ByteArrayInputStream: 此类实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray () 和 toString () 获取数据。 内存操作流无需关闭 案例演示: public class MyTest2 { public static void main(String[] args) throws IOException { //ByteArrayOutputStream() //创建一个新的 byte 数组输出流。 //创建出内存操作流 他维护着一个字节数组来充当缓冲区 ByteArrayOutputStream bos = new ByteArrayOutputStream(); bos.write("好好学习".getBytes()); bos.write("天天向上".getBytes()); bos.write("爱生活".getBytes()); bos.write("爱Java".getBytes()); byte[] bytes = bos.toByteArray(); read