一、字节流
1.分类
InputStream(输入流)
FileInputStream --文件输入流
BufferedInputStream --缓冲输入流
字节流 ObjectInputStream --对象输入流
DataInputStream --数据输入流
ByteArrayInputStream --内存输入流
OutputStream(输出流)
FileOutputStream --文件输出流
BufferedOutputStream --缓冲输出流
ObjectOutputStream --对象输出流
DataOutputStream --数据输出流
ByteArrayOutputStream --内存输出流
PrintOutputStream --打印输出流
2. InputStream类
所有字节输入流的父类。
3. FileInputStream类
3.1 创建文件输入流(读流)
FileInputStream fs=new FileInputStream("e:\\1.txt");
3.2 方法
int read() //读取下一个数据字节,如果到达文件尾,返回-1。
int read(byte[] b)
//将文件流中的字节存入byte数组中(一次性读出来)
read(byte[]) 是相当于给一个容器,没有都去填充这个容器,//它的返回值是容器中有效字节的个数。
int read(byte[] b, int off, int len)
//将文件流中的最多len个字节的数据读入一个byte数组中
void close() //关闭文件输入流并释与之有关的系统资源
例:fs.close();
long skip(long n) //从输入流中跳过并丢弃n个字节的数据。
3.3基本操作
法一:
File f=new File("e:\\1.txt");
if(f.exists()){
FileInputStream fi=new FileInputStream(f);
int n;
while((n=fi.read())!=-1){ //注意fi.read()读取下一个
System.out.print((char)n);
}
fi.close();
}
法二:
File f=new File("e:\\1.txt");
if(f.exists()){
FileInputStream fi=new FileInputStream(f);
byte[] bs=new byte[(int)f.length()];
fi.read(bs);
System.out.print(new String(bs));
fi.close();
}
4. OutputStream类
所有字节输出流的父类。
5. FileOutputStream类
5.1创建文件输出流
FileOutputStream fo=new FileOutputStream("e:\\1.txt");
5.2方法
void write(int b) //将指定字节写入文件输出流中,一次写一个字节
void write(byte[] b) //将指定数组写入文件输出流中。
void write(byte[] b, int off, int len) //write(byte[],起始位置,长度)表示从字节数组的开始位置写多长
void close() //关闭文件输入流并释与之有关的系统资源
例:fo.close();
5.3基本操作
法一:
File f=new File("e:\\1.txt");
if(!f.exists()){
f.createNewFile();
}
FileOutputStream fos=new FileOutputStream(f);
fos.write(97);
fos.write(100);
fos.close();
法二:
File f=new File("e:\\1.txt");
if(!f.exists()){
f.createNewFile();
}
FileOutputStream fo=new FileOutputStream(f);
Scanner sc=new Scanner(System.in);
System.out.println("请输入字符串:");
String str=sc.next();
fo.write(str.getBytes()); //注意String类中的getBytes()将字符串转换成字符组数
fo.close();
二、对文件中的内容进行添加
1. 原理:
(1)读取指定文件中的内容,转成String;
(2)将String转为StringBuffer;
(3)用户输入字符串,通过StringBuffer中的append()方法将字符串存入文件中;
(4)关闭输入流和输出流。
2.代码
File f=new File("e:\\1.txt");
FileInputStream fi=new FileInputStream(f);
byte[] bs=new byte[(int)f.length()];
fi.read(bs);
Scanner sc=new Scanner(System.in);
StringBuffer sb=new StringBuffer(bs);
while(true){
System.out.println("输入添加的字符串:");
String str=sc.next();
if(str.equals("exit")){
break;
}
sb.append(str);
}
FileOutputStream fo=new FileOutputStream(f);
fo.write(sb.toString().getBytes());
fi.close();
fo.close();
三、文件的复制
1原理:
(1)读取需要复制的源文件的内容;
(2)创建目标文件;
(3)将从源文件中读取的数据写入目标文件中;
(4)关闭流。
2. 代码
//创建读流:读取源文件内容
File f=new File("e:\\1.txt");
FileInputStream fi=new FileInputStream(f);
byte[] bs=new byte[(int)f.length()];
fi.read(bs);
//创建目标文件
Scanner sc=new Scanner(System.in);
System.out.println("输入新的文件名:");
String filename=sc.next();
File fa=new File("e:\\"+filename+".txt");
if(!fa.exists()){
fa.createNewFile();
}
//创建写流:将获取源文件的内容写入目标文件
FileOutputStream fo=new FileOutputStream(fa);
fo.write(bs);
//关闭资源
fo.close();
fi.close();
四、文件的剪切
1. 原理
(1)读取需要复制的源文件的内容;
(2)创建目标文件;
(3)将从源文件中读取的数据写入目标文件中;
(4)关闭流;
(5) 删除源文件。
2. 代码
//创建读流:读取源文件内容
File f=new File("e:\\1.txt");
FileInputStream fi=new FileInputStream(f);
byte[] bs=new byte[(int)f.length()];
fi.read(bs);
//创建目标文件
Scanner sc=new Scanner(System.in);
System.out.println("输入新的文件名:");
String filename=sc.next();
File fa=new File("e:\\"+filename+".txt");
if(!fa.exists()){
fa.createNewFile();
}
//创建写流:将获取源文件的内容写入目标文件
FileOutputStream fo=new FileOutputStream(fa);
fo.write(bs);
//关闭资源
fo.close();
fi.close();
f.delete();
如果大家想浏览我的下一篇文章,请留言
此文章属于原创,不准随意转载:https://blog.csdn.net/LYQ2332826438