File
file是java.io.包下类文件.File类的文件,用于代表当前操作系统的文件(文件或文件夹)
file只能对文件本身进行操作,并不能操作文件数据,使用io流读写文件数据或者其他数据。
// 1.创建一个file对象,指代某个具体的文件
// File f1 = new File("F:/shuangti/io.txt");写法1
File f1 = new File("F:\\shuangti\\io.txt");
//File f1 = new File("F:"+File.separator+ "shuangti"+File.separator+"io.txt");
// 2.获得文件大小
System.out.println(f1.length());
//3.指向一个文件夹
File f2 = new File("F:\\shuangti");
System.out.println(f2.length());
//4.指定一个不存在的文件
File f3 = new File("F:\\shuangti\\aaa.txt");
System.out.println(f3.length());
//文件不存在显示flase
System.out.println(f3.exists());
//显示绝对路径:带盘符
//File f4 = new File("H:\\java\\IDE\\javastudy\\date_4.7file_IO\\src\\liuboss");
//相对路径(重点):不带盘符,默认是直接去工程下寻找
File f4 = new File("date_4.7file_IO\\src\\liuboss");
System.out.println(f4.length());
System.out.println(f4.exists());
File f1 = new File(F://shaungti//io.txt);
System.out.println(f1.length());
//判断当前文件对象指代的是否是文件
System.out.println(f1.isFile());
//判断当前文件对象是否是文件夹
System.out.println(f1.isDirectory());
//获取当前文件名称
System.out.println(f1.getName());
//获取文件字节数
System.out.println(f1.length());
//获取创建时使用的路径
System.out.println(f1.getPath());
//获取绝对路径
System.out.println(f1.getAbsolutePath());
//获取文件最后修改时间
long time = f1.lastModified();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(time));
public static void main(String[] args) throws IOException {
File f1 =new File("F:\\shuangti\\liuboss.txt");
// 1.创建文件
System.out.println(f1.createNewFile());
// 2.创建文件夹
File f2 = new File("F:\\shuangti\\aaa");
// 3.创建一级文件夹 mkdirs创建多级文件夹
System.out.println(f2.mkdir());
//删除文件,空文件夹,不能删除非空文件夹
System.out.println(f1.delete());
System.out.println(f2.delete());
}
IO概述
IO流本质就是读写数据,IO流(将数据从磁盘输入到内存,或者将内存数据输出到磁盘中)
1.按流的方向分为
1.I代表INput输入流
2.O代表OUTput输出流
2.按流的最小存储单位
1.字节流
2.字符流
3.学习IO流目标
1.先搞清楚IO流的分类和体系
2.再学每个IO流的用法

一、字节流
FileInPutStream
作用:以内存为基准,可以把磁盘文件中的数据以字节的形式读入到内存中
public static void main(String[] args) throws Exception {
//1.创建一个文件字节输入流管道,与源文件接通
InputStream p1 = new FileInputStream(("data_4.9IO\\pp.txt"));
//2.开始读取源文件的字节数据
//3.读取第一个字符
/* int b1 = p1.read();
System.out.println(b1);
//4.读取第二个字符
int b2 = p1.read();
System.out.println(b2);
int b3 = p1.read();
System.out.println((char)b3);
//5.不存在的字符默认为-1
int b5 = p1.read();
System.out.println(b5);*/
//使用循环改造代码
int b;
while ((b= p1.read()) != -1){
System.out.print((char) b);
//读取数据很差,平凡调用系统资源
//流使用完毕,必须关闭释放系统资源
}
p1.close();
}
public static void main(String[] args) throws Exception {
// 目标每次读取多个字节
InputStream p1 = new FileInputStream(("data_4.9IO\\pp.txt"));
// 1.每次读取多个字节
/* byte[] buffer = new byte[4];
// 2.获取输出数量
int len = p1.read(buffer);
// 3.按数量限制解码
String rs = new String(buffer);
System.out.println(rs);
System.out.println("读取字节数量"+len);
int len2 = p1.read(buffer);
// 4.读多少倒多少
String rs2 = new String(buffer,0,len2);
System.out.println(rs2);
System.out.println("读取字节数量"+len2);*/
byte[] buffer = new byte[4];
int len;//记住读取了多少个字节
while ((len = p1.read(buffer)) != -1 )
{
String rs = new String(buffer,0,len);
System.out.println(rs);
}
p1.close();
}
FileOutPutStream
以内存为基准,把内存中的数据以字节形式写出到文件中
public static void main(String[] args) throws Exception {
//1.创建一个字节输出流管道与目标文件接通。
OutputStream os = new FileOutputStream("data_4.9IO\\os.txt");
os.write(97); //97就是一个字节
os.write('b'); //’b‘是一个字符
os.write('刘');
byte[] bytes ="我爱你中国".getBytes();
os.write(bytes);
os.write(bytes,0,15);
System.out.println(bytes);
os.close();
}
COPY
public static void main(String[] args) throws Exception {
//1.创建一个输入流管道用于复制文件
InputStream in = new FileInputStream("date_4.7file_IO\\src\\liuboss");
//2.创建一个输出流管道用于粘贴文件到位置
OutputStream os = new FileOutputStream("data_4.9IO\\src\\liuboss");
//3.创造一个数组接复制内容
byte[] buffer = new byte[1024];
//4.记住每次读取了多少字符
int len;
while ((len = in.read(buffer)) != -1){
os.write(buffer,0,len);
}
os.close();
in.close();
System.out.println("复制完成");
}
释放资源
public static void main(String[] args) {
InputStream in = null;
OutputStream os =null;
//1.创建一个输入流管道用于复制文件
try {
in = new FileInputStream("date_4.7file_IO\\src\\liuboss");
//2.创建一个输出流管道用于粘贴文件到位置
os = new FileOutputStream("data_4.9IO\\src\\liuboss");
//3.创造一个数组接复制内容
byte[] buffer = new byte[1024];
//4.记住每次读取了多少字符
int len;
while ((len = in.read(buffer)) != -1){
os.write(buffer,0,len);
}
System.out.println("复制完成");
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
try {
if(os != null) os.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
if(in != null) in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
try (
InputStream in = new FileInputStream("date_4.7file_IO\\src\\liuboss");
OutputStream os = new FileOutputStream("data_4.9IO\\src\\liuboss");
//只能放置资源对象
){
//3.创造一个数组接复制内容
byte[] buffer = new byte[1024];
//4.记住每次读取了多少字符
int len;
while ((len = in.read(buffer)) != -1){
os.write(buffer,0,len);
}
System.out.println("复制完成");
} catch (IOException e) {
throw new RuntimeException(e);
}
二、字符流
适合读写文本文件内容
FileReader
文件字符输入流
public static void main(String[] args) {
try (//1.创建一个文件字符输入管道
Reader rs = new java.io.FileReader("data_4.9IO\\pp.txt");
){
int c;
while ((c = rs.read()) != -1){
System.out.print((char) c);
}
} catch (Exception e) {
e.printStackTrace();
}
}
flush刷新流
BufferedReader缓存流
InPutStreamReader字符输入转换流
解决不同编码时,字符流读取文本内容乱码的问题
原理:先获取文件的原始字节流,再将齐按真实的字符集编码转成字符输入流,这样字符输入流中的字符就不乱码
PrintSteam
PrintWrite
DataOutPutStream(数据输出流)
允许把数据和其类型一并写出去
三、序列化流
对象序列化,就是把java对象写入到文件中去
ObjectOutputStream(对象字节输出流)
可以把java对象进行序列化:把java对象存入到文件中去。
对象需要序列化需要一个序列化接口 implements Serializable
反序列化
ObjectinputSteam
可以把java对象进行反序列化:把存储在文件中的java对象读入到内存中,被transient修饰将不会被序列化

3715

被折叠的 条评论
为什么被折叠?



