从Java1.0到1.3,我们在开发需要I/O支持的应用时,要面临以下问题: 没有数据缓冲区或通道的概念,开发人员要编程处理很多底层细节 I/O操作会被阻塞,扩展能力有限 所支持的字符集编码有限,需要进行很多手工编码工作来支持特定类型的硬件. 不支持正则表达式,数据处理困难. 为了解决这些问题,在Java1.4引入了NIO.其中有两次主要改进: 在Java1.4中引入非阻塞I/O 在Java7中对非阻塞I/O进行修改 自此Java为I/O操作抽象出了缓冲区和通道区:字符集的编码和解码能力:提供了…
NIO简介: Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API.NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的.基于通道的IO操作.NIO将以更加高效的方式进行文件的读写操作. NIO与IO的主要区别:  通道和缓冲区: Java NIO系统的核心在于:通道(Channel)和缓冲区(Buffer).通道表示打开到 IO 设备(例如:文件.套接字)的连接.若需要使用 NIO 系统,需…
众所周知,递归编程是一项有争议的技术,因为它需要大量的内存,但是它能简化一些编程任务.基本上,一个递归操作都是程序调用自己传递参数修改的值或者参数传递到当前的程序循环中.递归编程通常用来计算阶乘斐波那契数列,回文,谢尔宾斯基地毯等问题.下面的代码演示了用递归实现的阶乘. /** * Calculate the factorial of n (n! = 1 * 2 * 3 * … * n). * * @param n the number to calculate the factorial of…
一.环境变量(PATH) 科普下,环境变量不是java的知识,是windows系统的环境变量. 下面请看怎么查看和修改windows的环境变量 在“我的电脑”右键属性进入后 点击“高级系统设置”(如下图):…
>>NIO中的内存映射 (1)什么是内存映射文件内存映射文件,是由一个文件到一块内存的映射,可以理解为将一个文件映射到进程地址,然后可以通过操作内存来访问文件数据.说白了就是使用虚拟内存将磁盘的文件数据加载到虚拟内存的内存页,然后就可以直接操作内存页数据.我们读写一个文件使用read()和write()方法,这两个方法是调用系统底层接口来传输数据,因为内核空间的文件页和用户空间的缓冲区没有一一对应,所以读写数据时会在内核空间和用户空间之间进行数据拷贝,在操作大量文件数据时会导致性能很低,使用内…
Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象称作 输入流,可以向其中写入一个字节序列的对象称作 输出流. ☑ 这些字节序列的来源可以是:文件.网络连接.内存块等. ☑ 抽象类InputStream和OutputStream是构成输入/输出(I/O)的基础. ☑ 因为面向字节的流不便于处理以Unicode形式存储的信息(字符),所以从抽象类Re…
package com.swift.kuozhan; import java.io.File; import java.io.FileFilter; /*使用文件过滤器筛选将指定文件夹下的小于200K的小文件获取并打印(包括所有子文件夹的文件).*/ public class kuaozhan1 { public static void main(String[] args) { File dir = new File("c:/"); if(!dir.exists()) { throw…
java开发中,常见的resource文件有:.xml,.properties,.txt文件等,后台开发中经常用到读取资源文件,处理业务逻辑,然后返回结果. 获取资源文件的方法说明getResource()返回:URL getResourceAsStream () 返回的是inputstream,需要定义一个InputStream接收 //Class.getResource和Class.getResourceAsStream在使用时,路径选择上是一样的.相当于你用getResource()取得F…
程序1 编写一个程序,统计当前目录下每个文件类型的文件数,程序实现如图: import os def countfile(path): dict1 = {} # 定义一个字典 all_files = os.listdir(path) for each_file in all_files: if os.path.isdir(os.path.join(path,each_file)): dict1.setdefault('文件夹', 0) # setdefault:如果字典中包含有给定键, # 则返…
输入输出流的分类 在 java.io 包中,包含了输入输出操作所需的类. I/O 流可以安装不同的标准分类: 按照流的方向分类: 输入流:将信息从代码外部输入代码 输出流:将代码得到的数据输出到文件.网络.内存等地方 按照流的分工分类: 节点流:访问磁盘.网络等获取数据的流,可以直接实例化 处理流:对信息进行加工转换的流,需要基于节点流实例化 按处理数据的类型分类: 面向字符的流:处理字符数据,自动实现 Java 内部格式(16 bit char 类型)与外部格式(UTF-8 等)的转换.基类是…
目录 1.Selenium实现文件上传 (1)页面中的文件上传说明 (2)文件上传示例 (3)总结 2.Selenium实现文件下载 (1)Firefox浏览器文件下载 1)操作步骤: 2)文件下载示例: (2)Chrome浏览器文件下载 1.Selenium实现文件上传 (1)页面中的文件上传说明 文件上传是Web页面上很常见的一个功能,用脚本去实现文件上传很简单. 一般场景:在页面中的上传按钮是一个<input>标签,其中type属性为type="file",这种可以用…
一.输入流与输出流 输入流将数据从文件.标准输入或其他外部输入设备中加载到内存.输出流的作用则刚好相反,即将在内存中的数据保存到文件中,或传输给输出设备.输入流在Java语言中对应于抽象类java.io.InputStream及其子类,输出流对应于抽象类java.io.OutputStream及其子类.抽象类java.io.InputStream与java.io.OutputStream定义了输入流和输出流的基本操作. (1)InputStream和FileInputStream 因为java.…
在传统的Java 网络编程中,对于客户端的每次连接,对于服务器来说,都要创建一个新的线程与客户端进行通讯,这种频繁的线程的创建,对于服务器来说,是一种巨大的损耗,在Java 1.4 引入Java nio 引入了 selector channel buffer 对此操作进行重新的定义: 服务端: package com.java.baseknowledge.net; import java.io.IOException; import java.net.InetAddress; import ja…
package com.swift.kaoshi; import java.io.File; import java.util.List; import java.util.Scanner; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.junit.Test; /* <servlet…
JRE : Java 运行环境 JDK :  Java 开发工具包,其中包括 JRE  (javac.java.javap.jar.javadoc .javah 等命令) JVM : Java 虚拟机 PATH : Windows 环境变量 CLASSPTH :Java 程序运行时类加载路径 ( 非 javac 编译时所需路径,是 java 命令运行时所需路径)   配置 CLASSPATH 时,以 . 代表当前目录 JAVA_HOME:Windows 系统临时变量  systemroot (h…
1.概述 Java NIO(New IO) 是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API.NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同, NIO支持面向缓冲区的.基于通道的IO操作. NIO将以更加高效的方式进行文件的读写操作. Java NIO系统的核心在于: 通道(Channel)和缓冲区(Buffer). 通道表示打开到 IO 设备(例如:文件.套接字)的连接. 若需要使用 NIO 系统,需要获取用于连接 IO 设备的通道以及…
Java开发工程师一般负责后端开发,当然也有专门做Java Web的工程师,但是随着前后端的分离,越来越多的Java工程师需要往大后端方向发展. 今天我们就来介绍一下Java后端开发者的书单. 首先要感谢一下江南白衣大大的后端书架,让我在初学阶段读到了很多好书,直到现在都印象深刻. 我在两年的学习历程中看了很多的书,其中不乏XXX入门到精通,XXX王者归来,XXX指南什么的. 虽然这类书确实毛病很多,但是作为非科班的我来说,当时还是看的津津有味.直到后来我看到一些优秀的书籍,以及白衣哥的书架,我…
[java基础]分支结构2 switch case /** 文件路径:G:\JavaByHands\if-else\ 文件名称:switchcase.java 编写时间:2016/6/6 作 者:郑晨辉 编写说明:switch case代码示例 */ public class switchcase { public static void main(String[] args){ int a = 4; switch(a){ case(1): System.out.println("输出的是1&q…
Java基础 01 Hello 随便新建一个文件夹,存放代码 新建一个Java文件 文件后缀名为.java Hello.java [注意点]系统可能没有显示文件后缀名,我们需要手动打开 编写代码  public class Hello{     public static void main(String[] args){         System.out.print("Hello,World!");    } } 编译javac java文件,会生成一个class文件 运行cla…
Java NIO Path接口和Files类配合操作文件 @author ixenos Path接口 1.Path表示的是一个目录名序列,其后还可以跟着一个文件名,路径中第一个部件是根部件时就是绝对路径,例如 / 或 C:\ ,而允许访问的根部件取决于文件系统: 2.以根部件开始的路径是绝对路径,否则就是相对路径: 3.静态的Paths.get方法接受一个或多个字符串,字符串之间自动使用默认文件系统的路径分隔符连接起来(Unix是 /,Windows是 \ ),这就解决了跨平台的问题,接着解析连…
NIO.2 JDK7对NIO进行了重大改进,主要包含以下两方面 新增Path接口,Paths工具类,Files工具类. 这些接口和工具类对NIO中的功能进行了高度封装,大大简化了文件系统的IO编程. 基于异步Channel的IO 在NIO基础上改进后的IO被称为NIO.2 , 上面第一个改进包含在java.nio下新增的包java.nio.file包. 第二个改进包含在原有的java.nio.channels下,新增了多个Aysnchronous开头的channel接口和类. 本文暂时只讨论第一…
在以前的Java版本中,如果要遍历某个文件夹下所有的子文件.子文件夹,需要我们自己写递归,很麻烦. 在Java7以后,我们可以NIO.2中的Files工具类来遍历某个文件夹(会自动递归). 大致用法: Path path=Paths.get("D:\\二次元"); Files.walkFileTree(path,new FileVisitor<Path>(){ //访问文件夹之前自动调用此方法 @Override public FileVisitResult preVisi…
控制台程序,本例读取Java基础之写文件部分(PrimesToFile2)写入的Primes.txt. 方法二:设置一个任意容量的.大小合适的字节缓冲区并且使用来自文件的字节进行填充.然后整理出缓冲区中所有的内容.这种方式的问题是:缓冲区的内容可能会在读取文件的一个数据项时半途而断.这样一来,就必须做一些工作对此进行检测并且找出下一步要做的工作,但是这比第一种方式更加有效,因为这极大减少了用于读取整个文件所需的读操作数目. 本例的关键是缓冲区类提供的compact()方法,即压缩缓冲区. imp…
控制台程序,本例读取Java基础之写文件部分(PrimesToFile2)写入的Primes.txt. 方法一:可以在第一个读操作中读取字符串的长度,然后再将字符串和二进制素数值读入到文本中.这种方式的唯一不足是:这不是一种有效读取文件的方式,因为有很多的读操作,其中的每个都读取非常少量的数据. import java.nio.file.*; import java.nio.channels.FileChannel; import java.io.IOException; import java…
如果你有很多疑问关于一个文件或目录,它是否是隐藏的,它的大小是多少,谁拥有它,你可以从元数据中得到这些信息.所谓的元数据,就是描述数据的数据. NIO.2组织了这些原数据的属性的概念,并提供了java.nio.file.attribute 包去访问它们.因为不同的文件系统有不同的概念跟踪这些属性,所以,NIO.2根据特定的文件系统进行映射然后对应到不同的view中.通常情况下,view会提供一些通用的方法,例如readAttributes().除此而外,你可以通过getAttribute() 和…
路径隶属于文件系统,实际上它是存储和组织媒体文件的格式,通常在一块或多块硬盘设备上,以便于非常容易地检索.文件系统可以通过  java.nio.file.FileSystems 这个final 类来访问,通常我们用来获取它的实例然后做我们想做的事情.FileSystems 包含下面两个非常重要的方法,还有 newFileSystem() 方法,用来构建一个新的文件系统实例. getDefault(): 这个静态方法会返回一个默认的FileSystem 给 JVM——通常是操作系统默认的文件系统.…
Java Stream,File,IO 关于NIO和IO的比较,参考:Java NIO系列教程(十二) Java NIO与IO java包之java.io 参考材料:菜鸟教材 NIO 由于下面的系列教程只翻译到了13,后面的也挺简单的.主要是代码.记录在这里. 重点参考:java NIO系列教程 15 Java NIO Path 翻译自:15Java NIO Path Java的java.nio.file.Path接口是JavaNIO 2 update的一部分,在Java6和Java7中得到更新…
控制台程序,本例读取Java基础之写文件部分(PrimesToFile)写入的primes.bin. import java.nio.file.*; import java.nio.*; import java.nio.channels.ReadableByteChannel; import java.io.IOException; public class ReadPrimes { public static void main(String[] args) { Path file = Pat…
控制台程序,使用通道从缓冲区获取数据,读取Java基础之写文件(BufferStateTrace)写入的charData.txt import java.nio.file.*; import java.nio.channels.ReadableByteChannel; import java.io.IOException; import java.nio.ByteBuffer; public class ReadAString { public static void main(String[]…
控制台程序,本例读取Java基础之写文件部分(WriterOutputToFile)写入的Saying.txt. import java.io.*; import java.nio.file.*; import java.nio.charset.Charset; public class ReaderInputFromFile { public static void main(String[] args) { Path file = Paths.get(System.getProperty("…