IO流(三)其他流与File类
1:其他的流
1: DataOutputStream ;多了一些操作基本数据类型的功能
DataInputStream:读取文件。
用DataOutputStream流写进去的数据,就用DataInputStream流来读取。
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class DateIODemo1 {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("e:\\cc.txt");
/*
* 数据输出流是一种处理流,所以应该传入一个节点流作为参数
* 数据输出流写到文本上的内容是不是按照程序中的原样写进文件中的
*/
DataOutputStream dos = new DataOutputStream(fos);
dos.writeInt(123);//4字节
dos.writeBoolean(false);//1字节
dos.writeDouble(12.34);//8字节
//数据输出流是一种处理流,所以应该传入一个节点流作为参数
FileInputStream fis = new FileInputStream("e:\\cc.txt");
DataInputStream dis = new DataInputStream(fis);
//按顺序读取才能读到正确的数据
System.out.println(dis.readInt());
System.out.println(dis.readBoolean());
System.out.println(dis.readDouble());
dis.close();
dos.close();
}
}
2:关于内存的流:不用制定硬盘中的某个文件路径,因为所有的数据都是写入到内存上的,所以这些数据不会被永久保存。
2.1 ByteArrayOutputStream;内存写入流。如果不是字符,则可以调用toByteArray方法获得内存中的数据。
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class ByteArrayOutputDemo1 {
public static void main(String[] args) throws IOException, InterruptedException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bos.write("我写的这些东西真的放到了内存里面了".getBytes());
String str = bos.toString();
System.out.println(str);
}
}
2.2 ByteArrayInputStream:内存读取流。
import java.io.ByteArrayInputStream;
import java.io.IOException;
public class ByteArrayInputStreamDemo1 {
public static void main(String[] args) throws IOException {
byte[] b = "我真的真的在内存里面".getBytes();
ByteArrayInputStream bis = new ByteArrayInputStream(b);
byte[] b2 = new byte[1024];
int len = -1;
while((len = bis.read(b2)) != -1){
System.out.println(new String(b2, 0, len));
}
}
}
3:打印流: PrintStream 打印的所有字符都使用平台的默认字符编码转换为字节。在需要写入字符而不是写入字节的情况下,应该使用 PrintWriter 类。
PrintStream
PrintWriter
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
//接收键盘录入,写到文件中。
public class PrintStreamDemo2 {
public static void main(String[] args)throws Exception {
InputStream is = System.in;
BufferedReader br = new BufferedReader(new InputStreamReader(is));
//打印流。
PrintStream ps = new PrintStream("f:\\aaa.txt");
String str = null;
while(true){
str = br.readLine();
if("886".equals(str)){
break;
}
ps.println(str);//将数据和换行写到目的地中。
}
br.close();
}
}
4:RandomAccessFile:随机流。这个流并不是像平时说的那样“随机”,只是程序员可以使用这个类类读取文件中指定位置的数据,或者在文件中指定是位置写入数据。关键的方法就是seek();
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
public class RandomAccessFiileDemo1 {
public static void main(String[] args) throws IOException {
RandomAccessFile raf = new RandomAccessFile("e:\\cc.txt", "rw");
raf.writeBoolean(true);
raf.writeBytes("he");
// raf.writeFloat(123.99f);
raf.write(123);
raf.seek(0);//可以让指针指向文件的某个位置
System.out.println(raf.readBoolean());
System.out.println(raf.read());
System.out.println(raf.readInt());
//System.out.println(raf.readInt());
raf.close();
}
}
5:对象流. Object 操作对象的流
这里会涉及到一个关键字transient(中文:短暂的,临时的),用来修饰成员变量。被static或者transient修饰的成员变量时改变量的值不会被对象流写出去的,也不会被读取到。对象流操作对象必须事项序列化接口Serializable,要不会出现java.io.InvalidClassException 无效的类型异常。
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import com.java.domain.Student;
public class WriterObjectDemo1 {
public static void main(String[] args) throws IOException, ClassNotFoundException {
FileOutputStream fos = new FileOutputStream("e:\\stu.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(new Student("zzz", 12));
oos.close();
// java.io.InvalidClassException 无效的类型异常
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("e:\\stu.txt"));
System.out.println(ois.readObject());
ois.close();
}
}
import java.io.Serializable;
public class Student implements Serializable {
//使用对象
private static final long serialVersionUID = 1L;
private String name;
//private static int age;
private transient int age;
// private int age;
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
public void test(){
}
}
Student类
6:文件类. File
6.1:File:表示文件或者目录。
6.2 常用的一些方法
delete() 删除文件或目录。
exists() 判断文件或目录是否存在。
getAbsoluteFile() 返回路径名的绝对路径名形式。返回值-File
getAbsolutePath() 返回路径名的绝对路径名字符串。返回值-String
getName() 返回由路径名表示的文件或目录的名称。
boolean isDirectory() 路径名表示的文件是否是一个目录。
boolean isFile() 路径名表示的文件是否是一个标准文件。
length() 返回路径名表示的文件的长度。
|
String[] |
list()返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。 |
|
String[] |
list(FilenameFilter filter)返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。 |
|
File[] |
listFiles()返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 |
|
File[] |
listFiles(FileFilter filter)返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。 |
|
File[] |
listFiles(FilenameFilter filter)返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。 |
mkdir() 创建此抽象路径名指定的目录(只能创建一层)。
mkdirs() 创建此抽象路径名指定的目录(可创建多层)。
经典示例:
// 遍历所有文件
public static void getFiles(String path) {
File file = new File(path);
if (!file.exists()) {
System.out.println("没有找到该路径或者文件");
return;
}
if (file.isFile()) {
System.out.println(file.getAbsolutePath());
} else {
System.out.println(file.getAbsolutePath());
File[] files = file.listFiles();
// 遍历文件
for (File file2 : files) {// 递归遍历
// 如果是目录在重新调用自己
getFiles(file2.getAbsolutePath());
}
}
}
// 删除所有文件
public static void deleteFile2(String path) {
File file = new File(path);
if (!file.exists()) {
return;
}
if (file.isFile()) {
file.delete();
} else {
File[] files = file.listFiles();
for (File file2 : files) {
deleteFile2(file2.getAbsolutePath());
}
file.delete();
}
}
IO流(三)其他流与File类的更多相关文章
- IO流——File类(文件流类)
java语言的输入输出操作是借助于输入输出包java.io来实现的,按传输方向分为输入流与输出流,从外设传递到应用程序的流为输入流,将数据从应用程序输入到外设的流为输出流. File类的构造方法: 1 ...
- 09、IO流—File类与IO流
目录 一.File类 基本认识 实用方法 获取功能 重命名功能(包含剪切) 判断功能 创建.删除文件 实际小案例 二.IO流 1.认识IO流 2.IO流基类介绍 字节流基类介绍 字符流基类介绍 三.节 ...
- 关于Java的File类、字节流和字符流
一.File类: 在Windows下的路径分隔符(\)和在Linux下的路径分隔符(/)是不一样的,当直接使用绝对路径时,跨平台会报No Such file or diretory异常. File中还 ...
- Properties-转换流-打印流-序列化和反序列化-Commons-IO工具类
一.Properties 类(java.util) 概述:Properties 是一个双列集合;Properties 属于map的特殊的孙子类;Properties 类没有泛型,propert ...
- java.io.File类
java.io.File类 1.凡是与输入.输出相关的类.接口等都定义在java.io包下 2.File是一个类.能够有构造器创建其对象.此对象相应着一个文件(.txt .avi .doc .ppt ...
- Java面向对象 IO (三)
Java面向对象 IO (三) 知识概要: (1)IO 流的操作规律 (2)异常日志信息IO处理 ...
- C#文件操作基础之File类和FileInfo类
文件和I/O流的差异: 文件是一些具有永久存储及特定顺序的字节组成的一个有序的.具有名称的集合. 因此对于文件,我们经常想到文件夹路径,磁盘存储,文件和文件夹名等方面. I/O流提供一种后备存储写入字 ...
- File 类 操作实例
File 操作 <介绍> 尽管java.io定义的大多数类是实行流式操作的,File类不是.它直接处理文件和文件系统.也就是说,File类没有指定信息怎样从文件读取或向文件存储:它描述了文 ...
- 【Java】File类
File类 File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹) File类声明在java.io包下 File类中涉及到关于文件或文件目录的创建.删除.重命名.修改时间.文件大小等方法,并 ...
- JAVA实现File类中的遍历操作并输出内容
package shb.java.testIo; import java.io.BufferedReader; import java.io.BufferedWriter; import java.i ...
随机推荐
- java程序练习
数组求和作业 开发环境:java 工具:eclipse 两种数据类型excel和csv 在同学建议下,我选择用csv文件打开,这就引来了第一个问题,在java中如何调用csv文件.以下是我百度的结果 ...
- Bug报告提交规范
首先声明,bug的测试规范应该在公司的正式文档建立.本建议非正式文档,有些内容可能不正确,有些内容可能需要继续商榷,甚至有些内容同公司规范有冲突.如果发现问题,直接忽略本文相应内容.本帖本意仅就工作中 ...
- spark-streming 中调用spark-sql时过程遇到的问题
在spark-streming 中调用spark-sql时过程遇到的问题 使用版本:spark-2.1.0 JDK1.8 1. spark-sql中对limit 的查询结果使用sum() 聚合操作不生 ...
- spring boot maven多模块打包部署到tomcat
@SpringBootApplication(scanBasePackages = {"com.xxx.*"}) public class ApiApplication exten ...
- 重新打造的我的Pugo
Pugo博客已经搭建了好几个月了吧,给我感受到非常方便的就是,我换了好多VPS,迁移显得非常的方便,但是也有不足的地方,比如发布一篇新的博客,我每次都需要重新进入后台进行新的Post,还需要重新bui ...
- 【OCP认证12c题库】CUUG 071题库考试原题及答案(25)
25. choose the best answer Evaluate the following SQL statement: ALTER TABLE hr.emp SET UNUSED (mgr_ ...
- centos7安装nginx(自定义安装文件夹)
一.安装所需要的依赖软件 1.gcc:nginx编译依赖gcc环境 #yum install gcc-c++ 2.pcre:(Perl Compatible Regular Expressions)是 ...
- [bzoj4712]洪水 线段树+树链剖分维护动态dp+二分
Description 小A走到一个山脚下,准备给自己造一个小屋.这时候,小A的朋友(op,又叫管理员)打开了创造模式,然后飞到山顶放了格水.于是小A面前出现了一个瀑布.作为平民的小A只好老实巴交地爬 ...
- 【bzoj 2716】[Violet 3]天使玩偶 (CDQ+树状数组)
题目描述 Ayu 在七年前曾经收到过一个天使玩偶,当时她把它当作时间囊埋在了地下.而七年后 的今天,Ayu 却忘了她把天使玩偶埋在了哪里,所以她决定仅凭一点模糊的记忆来寻找它. 我们把 Ayu 生活的 ...
- 写给移动开发者的 React Native 指南
本文原创版权归 简书 wingjay 所有,如有转载,请于文章篇头位置显示标注原创作者及出处,以示尊重! 作者:wingjay 出处:http://www.jianshu.com/p/b8894425 ...