1.流的简述及演示案例
输入流和输出流相对于内存设备而言.
将外设中的数据读取到内存中:输入
将内存的数写入到外设中:输出。
字符流的由来:
其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表。获取对应的文字。
在对这个文字进行操作。简单说:字节流+编码表
字节流的两个顶层父类:
1,InputStream 2,OutputStream.
字符流的两个顶层父类:
1,Reader 2,Writer

String filePath = "F:\\demo.txt";
FileWriter fw = new FileWriter(filePath,true);
/*
* 调用Writer对象中的write(string)方法,写入数据。
*
* 其实数据写入到临时存储缓冲区中。
*
*/
fw.write("abcdehahaha");
//
fw.write("xixi");
/*
* 进行刷新,将数据直接写到目的地中。
*/
fw.flush();

//1,创建读取字符数据的流对象。
/*
* 在创建读取流对象时,必须要明确被读取的文件。一定要确定该文件是存在的。
*
* 用一个读取流关联一个已存在文件。
*/
FileReader fr = new FileReader("demo.txt");
//第一种方式读取
// int ch3 = 0;
// while((ch3=fr.read())!=-1){//使用read()循环一个个字符读取
// System.out.print((char)ch3);
// }

//第二种方式读取
// char[] buf = new char[1024];
// int len = 0;
// while((len=fr.read(buf))!=-1){
// System.out.println(new String(buf,0,len));
// }
//第三种方式读取
BufferedReader bufr = new BufferedReader(fr);
String line = null;
while((line=bufr.readLine())!=null){
System.out.println(line);
}
fr.close();

2.用缓冲区方法buffer读写文件
//读取demo,写入demowrite
String readFilePath = "F:\\demo.txt";
String writeFilePath = "F:\\demowrite.txt";
FileReader fr = new FileReader(readFilePath);
BufferedReader bufr = new BufferedReader(fr);
FileWriter fw = new FileWriter(writeFilePath);
BufferedWriter bufw = new BufferedWriter(fw);
String line = null;
while ((line = bufr.readLine()) != null) {
bufw.write(line);
bufw.newLine();
bufw.flush();
}
bufw.close();
bufr.close();

3.LineNumberReader
String readFilePath = "F:\\demo.txt";
FileReader fr = new FileReader(readFilePath);
LineNumberReader lnr = new LineNumberReader(fr);
String line = null;//LineNumberReader比BufferedReader多了个功能,就是可以返回当前行号。另外setLineNumber能改变行号,却不能改变读的位置。
lnr.setLineNumber(1);//getLineNumber()显示的行号会从2开始
while((line=lnr.readLine())!=null){
System.out.println(lnr.getLineNumber()+":"+line);
}
lnr.close();

4.File类对象的使用
File file = new File("F:\\");
System.out.println("getFreeSpace:"+file.getFreeSpace());//获取F盘的剩余空间
System.out.println("getTotalSpace:"+file.getTotalSpace());
System.out.println("getUsableSpace:"+file.getUsableSpace());
//
File[] files = File.listRoots();//获取电脑的磁盘
//
for(File file2 : files){
//
System.out.println(file2);
//
}

//重命名,将demo.txt重命名为demowrite1
File f1 = new File("F:\\demo.txt");
File f2 = new File("F:\\demowrite1.txt");
boolean b = f1.renameTo(f2);
System.out.println("b="+b);

// 文件的创建和删除。
File file = new File("F:\\file.txt");
/*
* 和输出流不一样,如果文件不存在,则创建,如果文件存在,则不创建。
*/
//
boolean b = file.createNewFile();
System.out.println("b=" + b);
FileWriter writer = new FileWriter(file);
writer.write("aaa");
writer.flush();
writer.close();

boolean b1 = file.delete();

System.out.println("b1=" + b1);

5.Serializable标记接口
Serializable:用于给被序列化的类加入ID号。
用于判断类和对象是否是同一个版本。
public class Person implements Serializable {
/**
* transient:非静态数据不想被序列化可以使用这个关键字修饰。
*/
private static final long serialVersionUID = 9527l;
private transient String name;
private static int age;

public Person(String name, int age) {
this.name = name;
this.age = age;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}
}
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("obj.object"));
// 对象序列化。 被序列化的对象必须实现Serializable接口。
oos.writeObject(new Person("小强", 30));
oos.close();

ObjectInputStream ois = new ObjectInputStream(new FileInputStream("obj.object"));
// 对象的反序列化。
Person p = (Person) ois.readObject();
System.out.println(p.getName() + ":" + p.getAge());
ois.close();

JAVA基础学习之流的简述及演示案例、用缓冲区方法buffer读写文件、File类对象的使用、Serializable标记接口(6)的更多相关文章

  1. JAVA基础学习day21--IO流三-File、Properties、PrintWriter与合并、分割流

    一.File 1.1.File概述 文件和目录路径名的抽象表示形式. 用户界面和操作系统使用与系统相关的路径名字符串 来命名文件和目录.此类呈现分层路径名的一个抽象的.与系统无关的视图.抽象路径名 有 ...

  2. JAVA基础学习day20--IO流二-缓冲流、字节流

    一.缓冲流 1.1.字符流的缓冲区 缓冲区的出现是为了提高IO的读写效率 对应类 BufferedReader BufferedWriter 缓冲区要结合流才可以使用 在流的基础上对流的功能进行了增强 ...

  3. JAVA基础学习day19--IO流一、FileWrite与FileReader

    一.IO简述 1.1.简述 IO:input/output IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的对象都在IO包中. 1.2.结构 字节流抽象类: ...

  4. JAVA基础学习day22--IO流四-对象序列化、管道流、RandomAccessFile、DataStream、ByteArrayStream、转换流的字符编码

    一.对象序列化 1.1.对象序列化 被操作的对象需要实现Serializable接口 1.2.对象序列化流ObjectOutputStream与ObjectInputStream ObjectInpu ...

  5. Java基础学习-IO流

    package IObasics; import java.io.FileWriter; import java.io.IOException; /*IO流 * 通过数据流.序列化和文件系统提供系统输 ...

  6. java基础学习_io流之FileInputStream

    一.FileInputStream属性: /* File Descriptor - handle to the open file */private final FileDescriptor fd; ...

  7. java基础学习总结——流

    一.JAVA流式输入/输出原理

  8. java基础学习总结四(控制语句<顺序、选择、循环>、方法)

    一:结构控制语句 结构控制语句分为3种,顺序语句.选择语句.循环语句. 1:顺序语句 就是自上而下的执行程序,默认执行顺序. 2:选择语句 if结构语句:如果满足条件,则执行该语句. if...els ...

  9. 转载-java基础学习汇总

    共2页: 1 2 下一页  Java制作证书的工具keytool用法总结 孤傲苍狼 2014-06-24 11:03 阅读:25751 评论:3     Java基础学习总结——Java对象的序列化和 ...

随机推荐

  1. 获取SHA1和MD5

    首先:1.我们进入到通过cmd打开控制台,进入cmd定位到.android文件夹下.如下图: 2.输入keytool -list -v -keystore debug.keystore得到三种指纹证书 ...

  2. COGS 902 乐曲主题 题解 & hash入门贺

    [题意] 给定一个长为n的序列,元素都是不超过88的正整数,求序列中主题的最大长度. 所谓主题是指在序列中出现了至少两次并且不相交的子串.特别的,主题可以变调,也就是说如果一个子串全部加上或减去一个数 ...

  3. css position属性

    absolute, 屏幕为参照, 但固定在页面上,随页面滚动而动. fixed, 父元素没有指定position属性(或position属性为static时)==>屏幕为参照,固定在屏幕的某个位 ...

  4. Android俄罗斯方块AI设计文档

    首先上源码: https://github.com/bingghost/SimpleTetris 一.概要 使用了2种AI算法: 一种是经典的Pierre Dellacherie算法 一种基于基于深度 ...

  5. .pyc文件是什么?

    一个.py文件就是一个模块,而模块名就是文件名,如module.py的模块名就是module.如果module.py文件里定义了一些函数和变量,而外部文件如test_module.py想使用这些函数或 ...

  6. LINUX优化得很好的sysctl.conf配置

    最近找了个不错的sysctl.conf的优化参数,在网站响应上已经算不错了的,time超时连接据说几乎为0了.  系统:centos 5.x sysctl.conf配置参数: kernel.msgmn ...

  7. ls常用选项总结

    参考: http://billie66.github.io/TLCL/book/index.html ls - List directory contents 选项 长选项 描述 -a --all 列 ...

  8. MySQL binlog 组提交与 XA(分布式事务、两阶段提交)【转】

    概念: XA(分布式事务)规范主要定义了(全局)事务管理器(TM: Transaction Manager)和(局部)资源管理器(RM: Resource Manager)之间的接口.XA为了实现分布 ...

  9. 警告: 程序集绑定日志记录被关闭(IIS7 64位系统)

    部署一个.NET程序在IIS7服务器,出现如下信息: 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: S ...

  10. 上传文件报错System.Net.ProtocolViolationException: 必须先将 ContentLength 字节写入请求流,然后再调用 [Begin]GetResponse。

    在上传文件的时候报错. 错误: System.Net.ProtocolViolationException: 必须先将 ContentLength 字节写入请求流,然后再调用 [Begin]GetRe ...