随机访问流?
?
?写数据
?读数据
?
不是12的原因:
指定位置读
import java.io.IOException;
import java.io.RandomAccessFile;
public class Demo {
public static void main(String[] args) throws IOException {
read();
//write();
}
static void read()throws IOException {
RandomAccessFile raf = new RandomAccessFile("a.txt", "rw");
int i = raf.readInt();
System.out.println(i);//100
System.out.println(raf.getFilePointer());//4
char c = raf.readChar();
System.out.println(c);//a
System.out.println(raf.getFilePointer());//6
String s = raf.readUTF();
System.out.println(s);//中国
System.out.println(raf.getFilePointer());//14
raf.seek(4);
System.out.println(raf.readChar());//a
}
static void write()throws IOException {
RandomAccessFile raf = new RandomAccessFile("a.txt", "rw");
raf.writeInt(100);
raf.writeChar('a');
raf.writeUTF("中国");
}
}
合并流
两个文件合并
多个文件合并?
?
?
序列化流
?
类必须需要实现Serializable接口才能序列化或者反序列化
?
序列化?
?
?反序列化
write()——修改class—read(),这样会报错
write()——修改class—重新write()——read(),这样就不会报错
?
transient关键字声明不需要序列化的成员变量
?
?
Properties集合
作为Map集合使用?
特殊功能
getProperty的底层原理:
?
?读写数据
?读数据
写数据
?
?
题目1
我有一个文本文件(a. txt) ,我知道数据是键值对形式的,但是不知道内容是什么。 请写一个程序判断是否有"lisi"这样的键存在,如果有就改变其实为"100"
public class Properties集合修改文本文件 {
public static void main(String[] args) throws IOException {
Properties prop = new Properties();
Reader r = new FileReader("a.txt");
prop.load(r);
Set<String> set = prop.stringPropertyNames();
boolean flag = false;
for (String s : set) {
if (s.equals("lisi")) {
flag = true;
prop.setProperty("lisi","100");
break;
}
}
Writer w=new FileWriter("a.txt");
prop.store(w,null);
w.close();
System.out.println(flag);
}
}
题目2
让猜数字小游戏只能玩五次
package classes.IO流;
import java.io.*;
import java.util.Properties;
import static classes.IO流.登录注册IO实现.game.GuessNumber.start;
public class 五次登陆注册游戏 {
public static void main(String[] args) throws IOException {
Properties prop = new Properties();
Reader r = new FileReader("a.txt");
prop.load(r);
r.close();
Writer w = new FileWriter("a.txt");
int count = Integer.parseInt(prop.getProperty("count"));
while (true) {
if (count > 5) {
System.out.println("试完结束,请付费");
break;
} else {
start();
count++;
String s = String.valueOf(count);
// String s=Integer.toString(count);这两种都可以
prop.setProperty("count", s);
prop.store(w, null);
w.close();
}
}
}
}
NIO包下的IO流(了解)
?
?
?
|