别人帮自己做网站有后门吗,网站建设三秒原则,公司网站建设维护及使用管理办法,用dw做电子商务网站步骤一、IO原理及分类
一、IO原理
1、I/O是Input/Output的缩写#xff0c;I/O技术是非常实用的技术#xff0c;用于处理设备之间的数据传输#xff0c;如读写文件#xff0c;网络通信等。
2、java程序中对于数据的输入/输出操作一般都是以流的方式进行
3、java.io包下提供各…一、IO原理及分类
一、IO原理
1、I/O是Input/Output的缩写I/O技术是非常实用的技术用于处理设备之间的数据传输如读写文件网络通信等。
2、java程序中对于数据的输入/输出操作一般都是以流的方式进行
3、java.io包下提供各种流类和接口用与获取不同种类的数据并通过标准的方法输入或输出数据。
1、输入流input读取外部数据磁盘、光盘等存储设备的数据到程序内存中
2、输出流output将程序内存数据输出到磁盘、光盘等设备中 二、流的分类
一、按操作数据单位的不同分为字节流8bit、字符流16bit
二、按数据流的流向不同分为输入流、输出流
三、按流的节点不同分为节点流、处理流 一、Java的IO流共涉及40多个类实际上非常规则都是从如下4个抽象基类派生的。
二、由这四个类派生出来的子类名称都是以其父类名作为子类名后缀。 三、 节点流和处理流
1、节点流直接从数据源或目的地读写数据 2、处理流不直接连接到数据源或目的地而是连接在已存在的流上可以是节点流也可以是处理流。通过对数据的处理为程序提供更为强大的读写能力。 二、各类流概述
一、InputStream Reader
InputStream和Reader是所有输入流的基类。
1、InputStream典型实现FileInputStream
int read()intread(byte[] b) int read(byte[] b, int off,int len)
2、 Reader典型实现FileReader
int read()intread(char[] c) int read(char[] c, int off,int len)
注意程序中打开的文件IO资源不属于内存里的资源垃圾回收机制无法回收该资源所以应该
显式关闭文件IO资源。 3、FileInputStream 从文件系统中的某个文件中获得输入字节。FileInputStream用于读取非文本
数据之类的原始字节流。要读取字符流需要使用FileReader。
二、OutputStream Writer
OutputStream和 Writer是所有输出流的基类。
1、OutputStream和Writer也非常相似
void write(intb/intc);void write(byte[] b/char[] cbuf);void write(byte[] b/char[] buff,intoff, intlen);void flush();void close(); 需要先刷新再关闭此流
2、因为字符流直接以字符作为操作单位所以Writer可以用字符串来替换字符数组即以
String对象作为参数 void write(String str);void write(String str, intoff, intlen);
3、FileOutputStream从文件系统中的某个文件中获得输出字节。FileOutputStream用于
写出非文本数据之类的原始字节流。要写出字符流需要使用FileWriter 三、节点流或文件流
一、File文件类的使用
在讲节点流之前需要了解File文件类
1、java.io.File 类文件和文件目录路径的抽象表示形式与平台无关
2、File能新建、删除、重命名文件和目录但File不能访问文件内容本身。如果需要访问文件内本身则需要使用输入/输出流。
3、想要在Java程序中表示一个真实存在的文件或目录那么必须有一个File对象但是Java
程序中的一个File对象可能没有一个真实存在的文件或目录也就是程序中有File对象但对应的文件路径没有或者文件没有。
4、File对象可以作为参数传递给流的构造器
二、File对象
1、public File(String pathname)以pathname为路径创建File对象可以是绝对路径或者相对路径如果pathname是相对路径则默认的当前路径在系统属性user.dir中存储。 1.绝对路径是一个固定的路径,从盘符开始 2.相对路径是相对于某个位置开始
2、public File(String parent,String child)以parent为父路径child为子路径创建File对象。
3、public File(File parent,String child)根据一个父File对象和子文件路径创建File对象
4、路径中的每级目录之间用一个路径分隔符隔开。Java程序支持跨平台运行因此路径分隔符要慎用。路径分隔符和系统有关 1. windows和DOS系统默认使用“\”来表示 2. UNIX和URL使用“/”来表示
5、为了解决这个隐患File类提供了一个常量public static final String separator。根据操作系统动态的提供分隔符。 File file1 newFile(d:\\test\\info.txt);window File file2 newFile(d: File.separator test File.separator info.txt); File file3 newFile(d:/test);unix 6、File类的判断功能
public boolean isDirectory()判断是否是文件目录public boolean isFile()判断是否是文件public boolean exists()判断是否存在public boolean canRead()判断是否可读public boolean canWrite()判断是否可写public boolean isHidden()判断是否隐藏7、File类的创建功能 public boolean createNewFile()创建文件。若文件存在则不创建返回falsepublic boolean mkdir()创建文件目录。如果此文件目录存在就不创建了。如果此文件目录的上层目录不存在也不创建。public boolean mkdirs()创建文件目录。如果上层文件目录不存在一并创建 注意事项如果你创建文件或者文件目录没有写盘符路径那么默认在项目路径下。
8、File类的删除功能 public boolean delete()删除文件或者文件夹 删除注意事项Java中的删除不走回收站。要删除一个文件目录请注意该文件目录内不能包含文件或者文件目录
9、File类的获取功能
public String getAbsolutePath()获取绝对路径public String getPath()获取路径public String getName()获取名称public String getParent()获取上层文件目录路径。若无返回nullpublic long length()获取文件长度即字节数。不能获取目录的长度。public long lastModified()获取最后一次的修改时间毫秒值public String[] list()获取指定目录下的所有文件或者文件目录的名称数组public File[] listFiles()获取指定目录下的所有文件或者文件目录的File数组
10、File类的重命名功能
public boolean renameTo(File dest):把文件重命名为指定的文件路径
三、File文件类的使用 File dir1 newFile(D:/IOTest/dir1); if(!dir1.exists()) { // 如果D:/IOTest/dir1不存在就创建为目录 dir1.mkdir(); } // 创建以dir1为父目录,名为dir2的File对象 File dir2 newFile(dir1, dir2); if(!dir2.exists()) { // 如果还不存在就创建为目录 dir2.mkdirs(); } File dir4 newFile(dir1, dir3/dir4); if(!dir4.exists()) { dir4.mkdirs(); } // 创建以dir2为父目录,名为test.txt的File对象 File file newFile(dir2, test.txt); if(!file.exists()) { // 如果还不存在就创建为文件 file.createNewFile(); } 四、节点流写入文件 注意事项
定义文件路径时注意可以用“/”或者“\\”。在写入一个文件时如果使用构造器FileOutputStream(file)则目录下有同名文件将被覆盖。如果使用构造器FileOutputStream(file,true)则目录下的同名文件不会被覆盖在文件内容末尾追加内容。在读取文件时必须保证该文件已存在否则报异常。字节流操作字节比如.mp3.avi.rmvbmp4.jpg.doc.ppt字符流操作字符只能操作普通文本文件。最常见的文本文件.txt.java.c.cpp 等语言的源代码。尤其注意.doc,excel,ppt这些不是文本文件
四、缓冲流
1、目的
为了提高数据读写的速度Java API提供了带缓冲功能的流类在使用这些流类时会创建一个内部缓冲区数组缺省使用8192个字节(8Kb)的缓冲区 2、分类
缓冲流要“套接”在相应的节点流之上根据数据操作单位可以把缓冲流分为 1、BufferedInputStream和BufferedOutputStream 2、BufferedReader和BufferedWriter A、当读取数据时数据按块读入缓冲区其后的读操作则直接访问缓冲区。 B、当使用BufferedInputStream读取字节文件时BufferedInputStream会一次性从文件中读取8192个(8Kb)存在缓冲区中直到缓冲区装满了才重新从文件中读取下一个8192个字节 数组。 C、向流中写入字节时不会直接写到文件先写到缓冲区中直到缓冲区写满BufferedOutputStream才会把缓冲区中的数据一次性写到文件里。使用方法flush()可以强制将缓冲区的内容全部写入输出流 D、关闭流的顺序和打开流的顺序相反。只要关闭最外层流即可关闭最外层流也会相应关闭内层节点流 E、flush()方法的使用手动将buffer中内容写入文件 F、如果是带缓冲区的流对象的close()方法不但会关闭流还会在关闭流之前刷新缓冲区关闭后不能再写出 五、转换流
一、概述
1、转换流提供了在字节流和字符流之间的转换Java API提供了两个转换流 1、 InputStreamReader将InputStream转换为Reader 2、OutputStreamWriter将Writer转换为OutputStream是的你没看错字符转字节。是字符通向字节流的桥梁。
2、字节流中的数据都是字符时转成字符流操作更高效。
3、很多时候我们使用转换流来处理文件乱码问题。实现编码和解码的功能。
二、详解
1、InputStreamReader实现将字节的输入流按指定字符集转换为字符的输入流。需要和InputStream“套接”。 构造器 public InputStreamReader(InputStream in) public InputSreamReader(InputStream in,String charsetName) 如Reader isrnew InputStreamReader(System.in,”gbk”); 2、OutputStreamWriter实现将字符的输出流按指定字符集转换为字节的输出流。需要和OutputStream“套接” 构造器 public OutputStreamWriter(OutputStream out)public OutputSreamWriter(OutputStream out,String charsetName)未完待续