文件和IO总结
一、File类
File(String path):构造放法,参数为文件夹或文件的全路径。还有很多构造方法包括根据文件夹名创建一个文件
File(String parent,String child)以一个名为parent字符串作为父目录名,创建一个指向名为child文件对象
boolean exists()方法是判断File文件对象是否存在
否为文件还是文件夹
boolean createNewFile():根据文件路径(构造方法传入),创建一个文件。
boolean mkdirs():根据文件路径创建一个或者多个文件夹。
String getPath():得到全路径
String getName():得到文件名字
File[]listFiles():列出目录中的所有文件和文件夹
package java0725;
import java.io.File;
public class FileDisplay {
/**
* @param args
*/
public int printDir(String dirName) {
int fileCount = 0;
try {
File dirFile = new File(dirName);
File[] subFile = dirFile.listFiles();
if (null == subFile || subFile.length == 0) {
return 0;
}
for (int i = 0; i < subFile.length; i++) {
if (subFile[i].isDirectory()) {
String subDir = subFile[i].getAbsolutePath();
System.out.println("目录:" + subDir);
// MyFrame.ja.append("目录:" + subDir);
// fileCount += printDir(subDir);
if(subDir.indexOf(Listener.str02)>=0){
MyFrame.ja.append("文件:" + subDir);
fileCount += printDir(subDir);
}
}
if (subFile[i].isFile()) {
String fileName = subFile[i].getAbsolutePath();
System.out.println("文件:" + fileName);
String strin = BaseIO02.readFile2String(fileName);
if(strin.indexOf(Listener.str02)!=-1){
MyFrame.ja.append("文件:" + fileName + "\n");
}
fileCount++;
}
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return fileCount;
}
}
二.IO体系结构
1.流的概念
流是字节序列的抽象概念。流和文件的差别:文件是数据的静态存储形式,而流是指数据传输时的形态。文件只是流 的操作对象之一。流按其操作的对象不同可以分为文件流、网络流、内存流、磁带流等。
2.流的分类:
流按方向分为输入流(InputStream)和输出流(OutputStream):
流按性质分为:
基础字节流:⑴InputStream类:程序可以从中连续读取字节的对象叫输入流,在Java中,
用InputStream类来描 述所有输入流的抽象概念。这个类是抽象类。
⑵OutputStream类:程序可以向其连续写入字节的对象叫输出流,在Java中, 用OutputStream类 来描述所有输出流的抽象概念。这个类也是抽象类。
package java0726;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class BaseIO {
/**
* 程序主方法
*/
public static void main(String[] args)throws Exception {
BaseIO bi = new BaseIO();
String fileName = "src\\java0726\\BaseIO.java";
String result = bi.readFile2String(fileName);
System.out.println(result);
}
public String readFile2String(String fileName) throws IOException{
InputStream ins = new FileInputStream(fileName);
byte[] contentByte = new byte[ins.available()];
ins.read(contentByte);
String s=new String(contentByte);
return s;
}
}
缓冲字节流:BufferedInputStream/BufferedOutputStream,过滤流是用来包装基础字节流,以提供更好的特性,如提供缓冲 功能的BufferedInputStream/BufferedOutputStream,过滤流并不直接连接数据源。
package java0726;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class BaseIO04 {
/**
* 程序主方法
*/
public static void main(String[] args)throws Exception {
BaseIO04 bi = new BaseIO04();
String srcName = "E:\\学习\\java 资料\\jdk1.6.CHM";
//要复制的目标文件
String backName = "D:\\jdk1.6.CHM";
boolean result = bi.copyFile(srcName,backName);
System.out.println("复制结果:"+result);
}
/*简单的文件复制
* srcName 源文件名
* destName 目标文件名
* return 是否成功
*
*/
public boolean copyFile(String srcFile,String destFile) throws IOException{
File src = new File(srcFile);
File dest = new File(destFile);
//创建从源文件的输入流
InputStream ins = new FileInputStream(src);
//构建缓冲流
BufferedInputStream bis =new BufferedInputStream(ins);
//缓冲输出对象流
OutputStream out = new FileOutputStream(dest);
//构建缓冲流
BufferedOutputStream bos = new BufferedOutputStream(out);
int i=-1;
long start = System.currentTimeMillis();
while((i=ins.read())!=-1){
bos.write(i);
}
long timeCost = System.currentTimeMillis()-start;
System.out.println("用时(单位:秒):"+timeCost/1000);
ins.close();
//清空输出流的缓存
out.flush();
out.close();
return true;
}
}
//用时(单位:秒):120
//复制结果:true
基于具体数据类型的流:DataInputStream/DataOutputStream
基于对象的读写流:ObjectInputStream/ObjectOutputStream
对象输入输出流需要对对象的输入输出类进行序列化,继承Serilizable接口,如果需要反序列化则需要进行Externalizable接口. transient关键字是提供成员变量不考虑此成员变量。
package java0726;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.omg.CORBA.DataOutputStream;
public class BaseIO06 {
/**
* 程序主方法
*/
public static void main(String[] args)throws Exception {
BaseIO06 bi = new BaseIO06();
//要写入的文件名
bi.dataTypeStream();
}
public void dataTypeStream() throws Exception{
String fileName = "src\\java0726\\BaseIO05.data";
FileOutputStream fos = new FileOutputStream(fileName);
java.io.DataOutputStream dos = new java.io.DataOutputStream(fos);
//按类型写入
dos.writeBoolean(true);
dos.writeByte((byte)123);
dos.writeChar('J');
dos.writeDouble(3.1415926);
dos.writeFloat(2.7182f);
dos.writeInt(123456789);
// dos.writeLong(9988875475859607567L);
dos.writeShort((short)11223);
//按类型读取
java.io.DataInputStream dis = new java.io.DataInputStream(new FileInputStream(fileName));
System.out.println("\t"+dis.readBoolean());
System.out.println("\t"+dis.readByte());
System.out.println("\t"+dis.readChar());
System.out.println("\t"+dis.readDouble());
System.out.println("\t"+dis.readFloat());
System.out.println("\t"+dis.readInt());
System.out.println("\t"+dis.readShort());
}
}
分享到:
相关推荐
本文将深入探讨Linux中的文件IO和标准IO,以及它们之间的差异。首先,我们从基本概念出发,理解这两种IO方式。 **文件IO**是Linux系统中最常见的IO模型,它基于系统调用接口,如`open()`, `read()`, `write()`, `...
文件输入输出(File Input/Output,简称文件IO)是计算机编程中的基础操作,尤其是在系统级编程和应用开发中不可或缺。本文将围绕“文件IO编程”这一主题,详细讲解相关知识点,帮助初学者快速掌握文件IO的基本概念...
根据给定的信息,本文将对Java IO的基本概念及其在文件操作中的应用进行详细的解析与总结。主要内容包括:创建文件、删除文件、创建目录、列出指定目录下的所有文件及子目录等基本操作。 ### 一、Java IO概述 Java...
本文总结了 Linux 文件 IO 的相关知识点,涵盖了文件 IO 的基本概念、文件描述符、open 函数、read 函数、write 函数、lseek 函数、close 函数等。 一、文件 IO 概念 文件 IO 是计算机操作系统中最基本的输入/输出...
总结,文件IO是软件开发中不可或缺的一部分,理解并熟练掌握文件的读写操作、错误处理以及高效利用文件系统功能,能极大地提高代码的稳定性和效率。通过学习和实践,你将能够灵活地处理各种文件相关的任务。
总结,Android的文件IO操作提供了丰富的API来处理各种数据存储需求。理解这些类和接口的工作原理对于构建高效、可靠的应用程序至关重要。通过合理选择和组合不同的流,开发者可以实现高性能的数据读写操作,同时确保...
这篇博客“Java学习之IO总结及mina和netty”探讨了Java IO的基础知识,并深入到两个高级网络通信框架——Mina和Netty。Mina和Netty都是基于NIO(非阻塞IO)的高性能网络应用框架,它们简化了复杂网络编程的实现。 *...
"Labview 文件IO 打开和读取文本文件实验测试" Labview 文件IO 是 NI 公司开发的一种图形化编程语言,用于数据采集、信号处理和自动测试领域。该语言具有图形化编程的特点,易于使用和学习。 在 Labview 中,文件...
字节流、文件流、文件操作、字节流文件流相互转换,流的包装
### Java IO系统全面解析 #### 一、Java IO系统概述 ...无论是文件操作、网络通信还是对象序列化,Java IO系统都能提供合适的方法和技术支持。理解和掌握Java IO系统对于任何Java开发者来说都是非常重要的。
在Java编程语言中,IO(Input/...总结,Java中的IO操作提供了丰富的工具来处理文件复制,从基础的字节流到高效的NIO,都有相应的解决方案。在实际应用中,应根据需求选择合适的复制方法,同时注意优化性能和错误处理。
java中的IO操作总结(四) 前面已经把java io的主要操作讲完了 这一节我们来说说关于java io的其他内容 Serializable序列化 实例1:对象的序列化 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23...
总结,Java中的IO文件流操作是编程中必不可少的部分,理解并熟练掌握各类流的使用,能够有效提升程序的效率和灵活性。在实际开发中,根据需求选择合适的流类型,并合理利用处理流来优化性能,是每个Java程序员应该...
2. 文件IO:文件操作主要包括创建、读取、写入和删除文件。Java提供了File类来处理文件路径和属性,以及FileInputStream和FileOutputStream用于文件读写。字符流的FileReader和FileWriter适用于文本文件操作。 3. ...
总结起来,这个场景涉及到Java IO流的使用,Servlet的文件传输,Spring框架的HTTP请求处理,以及一些辅助库和自定义工具类。理解这些核心概念和技术,对于实现“通过IO流把文件传到前端并下载”的功能至关重要。
Java I/O 系统是 Java 编程语言中极为重要的组成部分,它提供了丰富的类和接口来处理文件和其他数据源的数据输入和输出。Java I/O 类库经历了多次迭代更新,在 Java 1.2.0 和 Java 1.4 版本中分别引入了面向字符的 I...
本文详细介绍了如何使用C++进行简单的文件IO操作,包括ASCII和二进制文件的读写。通过理解这些基本概念和技术,你可以更加熟练地处理文件相关的任务。无论是简单的文本文件还是复杂的二进制数据,C++都提供了强大的...
总结来说,Java IO流是处理输入输出的核心工具,无论是在本地文件系统还是在网络环境中,都能提供高效、灵活的文件操作手段。通过组合不同的流类,可以实现复杂的文件读写、上传和下载任务,同时适应文本和非文本...
总结来说,LabVIEW 8.20的文件I/O操作是其强大功能的一部分,通过提供的“第9章 文件IO”例程,开发者能够深入学习和实践文件的读写、定位、错误处理等操作,从而在自己的项目中有效地管理和利用数据。
在"8.23总结"这个文件中,可能包含了关于IO流和XML解析的实践案例、最佳实践、常见问题及其解决方案等内容。通过学习这个文件,开发者可以深化对这两部分知识的理解,提升在实际项目中的应用能力。