java 提供了转换流:
public static void huoqu(){
try {
BufferedReader br = new BufferedReader(new FileReader("d.txt"));
ArrayList<String> list = new ArrayList<String>();
String line = null;
while((line=br.readLine())!=null){
list.add(line);
}
System.out.println(list.get((int) (Math.random()*(list.size()))));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
字符流=字节流+编码表
编码表:
编码: 看得懂---看不懂
String---byte[]
解码: 看不懂---看得懂的
byte[] --String
字符流=转换(字节流)
输出流
OutputStreamWrite(new OutputStream)--简化 FileWriter--BufferedWriter(new FileWriter(""))
public static void Demo4(){
try {
OutputStreamWriter out = new OutputStreamWriter( new FileOutputStream("D:/a.txt"));
out.write("你好,世界");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
输入流
InputStreamReader(new InputStream)---简化 FileReader--BufferedReader(new FileReader(String url));
public static void Demo5(){
try {
InputStreamReader red = new InputStreamReader(new FileInputStream("D:/a.txt"));
int index =0;
while((index=red.read())!=-1){
System.out.println((char)index);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
字符流写入数据在缓冲区中,需要刷新一下,flush() 方法
面试题:
close() --关闭流以前,先刷新一下流,就不能再使用了-- 小东西 直接使用close()就可以
flush() 仅仅刷新缓冲区,刷新之后,还可以使用
那些复制,和啥,都和其他方法一下,懒得写了
//有个新东西在字符缓冲流中
Writer ---writerLine();--write写入数据之后---> newLine
Reader ---readLine(); --可以直接读取
代码如下:
//字符缓冲流的特殊方法
//newLine()--buuferedWriter
//readeLine() --bufferedReader
public class IoDemo9 {
public static void main(String[] args) {
readLin();
}
public void newLine(){
try {
BufferedWriter bw = new BufferedWriter(new FileWriter("b.txt"));
for(int i=0;i<100;i++){
bw.write("abc"+i);
bw.newLine();
bw.flush();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void readLin(){
try {
String s="";
BufferedReader br = new BufferedReader(new FileReader("b.txt"));
while((s=br.readLine())!=null){
System.out.println(s);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
字符流复制复制文本
public class IoDemo10 {
//复制文本
public static void main(String[] args) {
copy(new File("D:/a.txt"), new File("c.txt"));
}
public static void copy(File formFile, File newFile){
BufferedWriter bw=null;
BufferedReader br=null;
try {
bw = new BufferedWriter(new FileWriter(newFile));
br = new BufferedReader(new FileReader(formFile));
if(!newFile.exists()){
newFile.createNewFile();
}
String red = null;
while((red=br.readLine())!=null){
bw.write(red);
bw.newLine();
bw.flush();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
把集合中的数据写入到文件中:
public static void duxie(){
ArrayList<String> list = new ArrayList<String>();
list.add("你好");
list.add("号");
try {
BufferedWriter bw = new BufferedWriter(new FileWriter("d.txt"));
for(String s:list){
bw.write(s);
bw.newLine();
bw.flush();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
流中读取的数据存入集合中:
public static void duru(){
try {
BufferedReader br = new BufferedReader(new FileReader("d.txt"));
ArrayList<String> list = new ArrayList<String>();
String line = null;
while((line=br.readLine())!=null){
list.add(line);
}
System.out.println(list);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
文本文件中存了几个名字,用程序随机获取一个人的名字:
--先将流中数据存入集合中,再用random 获取
public static void huoqu(){
try {
BufferedReader br = new BufferedReader(new FileReader("d.txt"));
ArrayList<String> list = new ArrayList<String>();
String line = null;
while((line=br.readLine())!=null){
list.add(line);
}
System.out.println(list.get((int) (Math.random()*(list.size()))));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}