Java复习第四天---IO流

File类测试
  //根据指定的文件名和路径创建File对象
		File file = new File("myFile.txt");
		//file.exists();检测文件是否存在
		boolean exists = file.exists();
		System.out.println(exists);
		//按照file对象指定的路径和文件名创建一个新的文件
		file.createNewFile();
		exists = file.exists();
		System.out.println(exists);
		System.out.println("Path:"+file.getPath());
		//返回文件或目录对应的绝对路径
		System.out.println("Abs Path:"+file.getAbsolutePath());
		System.out.println("Abs File:"+file.getAbsoluteFile());
		/*File newFile = new File("myDir/newFile.txt");
		//如果源文件和目标文件在同一个目录下,则将源文件改名为新文件
		//如果源文件和目标文件不在同一个目录下,则将源文件移动至新的路径
		//文件内容不受影响
		file.renameTo(newFile);*/
		long lastModified = file.lastModified();
		System.out.println(new Date(lastModified));
		System.out.println("length:"+file.length());
//		canWrite()
		System.out.println("W="+file.canWrite());
//		canRead()
		System.out.println("R="+file.canRead());
//		isFile()
		System.out.println("F="+file.isFile());
//		isDirectory()
		System.out.println("D="+file.isDirectory());
		File delFile = new File("io.txt");
		boolean delete = delFile.delete();
		System.out.println("Del="+delete);
InputStream测试
  File fileIn = new File("myFile.txt");
		//使用InputStream的实现类读取文件内容到内存中
		//fileIn指向的文件必须存在
		InputStream in = new FileInputStream(fileIn);
		//read()读取文件中当前位置的一个字节,如果当前位置已经是文件末尾,则返回-1
		/*int read = in.read();
		System.out.println((char)read);
		read = in.read();
		System.out.println(read);*/
		//循环读取文件中的全部内容
		int read;
		while((read = in.read()) != -1){
			System.out.print((char)read);
		}
		//IO流不在垃圾回收机制处理的范围之内,要显式关闭
		in.close();
OutputStreamx测试
  File fileOut = new File("myFile.txt");
		//将内存中的数据写入到文件中
		//fileOut如果不存在,则创建一个新文件
		OutputStream out = new FileOutputStream(fileOut);
		String data = "aaaaaaaaaaaaaaaaaaaaaaaa";
		byte[] bytes = data.getBytes();
		//将字节信息写入到文件中,但是会覆盖文件之前的内容
		out.write(bytes);
Reader测试
  File fileRead = new File("myFile.txt");
		Reader reader = new FileReader(fileRead);
		//从文本文件中读取一个字符
		/*int read = reader.read();
		System.out.println((char)read);*/
		int len;
		char [] c = new char[10];
		while((len = reader.read(c)) != -1){
			System.out.println(new String(c));
		}
		reader.close();
Writer测试
  File fileWrite = new File("fileWriter.txt");
		Writer writer = new FileWriter(fileWrite);
		String str = "自古逢秋悲寂寥,我言秋日胜春朝,晴空一鹤排云上,便引诗情到碧霄";
		writer.write(str.toCharArray());
		//flush()方法可以强制将内存中Writer缓冲区的数据写入内存
		writer.flush();
		writer.close();
转换流测试
FileReader是InputStreamReader的子类
 FileWriter是OutputStreamWriter的子类
 说明一切文件在计算机中都是以字节形式保存的,所以从根本上来说,读取任何文件都需要使用字节流的方式
 为了能够对字符型数据进行有针对性的操作,提高效率,我们使用转换流将数据内容为字符的字节流转换为字符流
  File fileSrc = new File("utf-8.txt");
		String str = "";
		InputStream in = new FileInputStream(fileSrc);//1100010101
		InputStreamReader inRead = new InputStreamReader(in,"UTF-8");
		int len;
		char [] c = new char[1024];
		while((len = inRead.read(c)) != -1){
			str += new String(c,0,len);
		}
		System.out.println(str);
		inRead.close();

		File fileDest = new File("utf-8.txt");
		String str = "自古逢秋悲寂寥,我言秋日胜春朝,晴空一鹤排云上,便引诗情到碧霄";
		OutputStream out = new FileOutputStream(fileDest);
		OutputStreamWriter outWrite = new OutputStreamWriter(out,"UTF-8");
		outWrite.write(str);
		outWrite.flush();
		outWrite.close();

处理流之一:缓冲流:

BufferedInputStream 和 BufferedOutputStream

BufferedReader 和 BufferedWriter

处理流之二:转换流:

转换流提供了在字节流和字符流之间的转换

Java API提供了两个转换流:

InputStreamReader和OutputStreamWriter

字节流中的数据都是字符时,转成字符流操作更高效。

处理流之三:对象流:

ObjectInputStream和OjbectOutputSteam

用于存储和读取基本数据类型数据或对象的处理流。它的强大之处就是可以把Java中的对象写入到数据源中,也能把对象从数据源中还原回来。

序列化:用ObjectOutputStream类保存基本类型数据或对象的机制

反序列化:用ObjectInputStream类读取基本类型数据或对象的机制

ObjectOutputStream和ObjectInputStream不能序列化static和transient修饰的成员变量

RandomAccessFile类:

RandomAccessFile 类支持 “随机访问” 的方式,程序可以直接跳到文件的任意地方来读、写文件

支持只访问文件的部分内容

可以向已存在的文件后追加内容

RandomAccessFile 对象包含一个记录指针,用以标示当前读写处的位置。RandomAccessFile 类对象可以自由移动记录指针:

long getFilePointer():获取文件记录指针的当前位置

void seek(long pos):将文件记录指针定位到 pos 位置

构造器

public RandomAccessFile(File file, String mode)

public RandomAccessFile(String name, String mode)

创建 RandomAccessFile 类实例需要指定一个 mode 参数,该参数指定 RandomAccessFile 的访问模式:

r: 以只读方式打开

rw:打开以便读取和写入

rwd:打开以便读取和写入;同步文件内容的更新

rws:打开以便读取和写入;同步文件内容和元数据的更新

Java复习第四天---IO流

时间: 2024-12-26 20:58:48

Java复习第四天---IO流的相关文章

Java 基础(四)| IO 流之使用文件流的正确姿势

为跳槽面试做准备,今天开始进入 Java 基础的复习.希望基础不好的同学看完这篇文章,能掌握泛型,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆. 一.什么是 IO 流? 想象一个场景:我们在电脑上编辑文件,可以保存到硬盘上,也可以拷贝到 U 盘中.那这个看似简单的过程,背后其实是数据的传输. 数据的传输,也就是数据的流动.既然是流动也就会有方向,有入方向和出方向.举个上传文件的栗子,现在有三个对象,文件.应用程序.上传的目标地址(服务器).简化的上传文件有两步: 应用程序读文件

Java输入、输入、IO流 类层次关系梳理

Java输入.输入.IO流 类层次关系梳理 本文主要关注在Java编程中涉及到的IO相关的类库.方法.以及对各个层次(抽线.接口继承)的流之间的关系进行梳理 相关学习资料 http://baike.baidu.com/view/1007958.htm?noadapt=1 http://blog.csdn.net/hguisu/article/details/7418161 https://www.ibm.com/developerworks/cn/java/j-lo-javaio/ http:/

Java(四)--IO流

(一) Java流式输入/输出原理: 在Java程序中,对于数据的输入/输出操作以"流"(stream)方式进行,以获得不同种类的数据,程序中通过标准的方法输入或输出数据. (二)java.io抽象流分类: 节点流和处理流: 节点流为可以从一个特定的数据源(节点)读写数据(文件.内存) 处理流是"连接"在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能. IO流的基本方法: 节点流:写入或读出 处理流:转换数据类型 总图: (三)总结:

黑马程序员--Java基础学习笔记【IO流-字节流、转换流】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- IO 流 常用基类 字节流 InputStreamOutputStream 常用方法 int read() // 读取一个字节,以 int 形式返回 intread(byte[] b) // 读取最多数组长度个字节并存入该数组,返回实际读取字节 void write(int d) // 写出一个字节 voidwrite(byte[] d) // 将给定字节数组中的所有字节全部写出 void w

关于Java中面向对象章节、IO 流中的重点基础知识。

一.面向对象的三大特征,以及作用. 答:面向对象的三大特征即,封装性.继承性.多态性. 其分别的作用为 : 封装作用:将数据封装起来,提高数据的安全性, 继承作用:提高代码的复用性,减少冗余代码. 多态性:应用程序不必对每个派生类进行方法调用,只需要对抽象基类处理即可,大大提高程序的复用性,可以提高可扩充性和可维护性. 二.多态中的向上转型 的作用以及向下转型使用的原因 答:在多态中向上转型的是作用是,父类的引用对象名指向子类的实体,也就是用一个抽象的基类去调用每一个派生子类,向下转型的原因为,

java基础学习笔记之IO流

1.IO流用来处理设备之间的数据传输方向:硬盘通过“读reader”完成对内存的读取,内存通过“写writer”完成对硬盘的写入2.Java对数据的操作是通过流的方式3.Java用于操作流的对象都在IO包中4.流按操作数据分为两种:字节流和字符流--字符流的由来:>>字节流读取文字字节数据后,不直接操作而是先查指定的编码表.获取对应的文字.再对这个文字进行操作.简单说:字符流=字节流+编码表--字节流的两个顶层父类:1.InputStream 2.OutputStream--字符流的两个顶层父

Java基础知识强化之IO流笔记16:IO流的概述和分类

1. IO流的分类   流向:     (1)输入流:读取数据到内存     (2)输出流:写入数据到硬盘(磁盘)   操作的数据类型:    (1)字节流:操作的数据是字节                            输入流                            输出流        (2)字符流:操作的数据是字符,为了方便操作文本数据,Java就提供了字符流.                            输入流                      

Java基础知识强化之IO流笔记17:FileOutputStream构造方法使用

1. 可以参照之前写的笔记:   Android(java)学习笔记167:Java中操作文件的类介绍(File + IO流) 2. FileOutputStream(常用的)构造方法: FileOutputStream(File file)           Constructs a new FileOutputStream on the File file. FileOutputStream(String filename)           Constructs a new FileO

重踏学习Java路上_Day20(递归,IO流)

1:递归(理解)     (1)方法定义中调用方法本身的现象        举例:老和尚给小和尚讲故事,我们学编程    (2)递归的注意事项:        A:要有出口,否则就是死递归        B:次数不能过多,否则内存溢出        C:构造方法不能递归使用    (3)递归的案例:        A:递归求阶乘        B:兔子问题        C:递归输出指定目录下所有指定后缀名的文件绝对路径        D:递归删除带内容的目录(小心使用) 2:IO流(掌握)