目录
1、流
字符集:
概念:传输数据的通道
分类:
字符流:
字节流:
序列化和反序列化
图:
1、流
字符集:
utf-8:汉字占三字节
gbk :汉字占两个字节
byte[ ] bytes=str.getBytes(CharSet cs);
String str=new String(byte[] bytes,CharSet cs);
概念:传输数据的通道
分类:
内容:字符流 、字节流
方向:输入流、 输出流
功能:节点流、处理流(直接或间接继承节点流)
特性(数据源):文件流、网络流
流的释放顺序:和流的创建顺序相反。
程序在内存中运行,文件在磁盘上,把文件从磁盘上读入内存中来,这就需要输入流。反之,把内存中的数据写到磁盘上的文件里就需要输出流。
文件:java..io.File
文件路径(不可以出现空格中文):
相对路径:相对于当前工程(测试环境(工程的根目录)、运行环境)
绝对路径:相对于分区(从c d盘.....)
File f=new File("路径");
boolean exist=f.exists();//判断是否存在该路径
System.out.println(exist);
true boolean isFile = f.isFile();//是否是文件
boolean isDir=f.isDirectory();//是否是目录
boolean isAbs=f.isAbsolute();//是否是绝对路径
boolean canRead = f.canRead();//能否读
boolean canWrite = f.canWrite();//能否写
boolean canExecute = f.canExecute();//是否有权限执行
boolean hidden = f.isHidden();//是否是隐藏
String fileName = f.getName();//输出文件名
String path = f.getPath();//输出路径
String absolutePath = f.getAbsolutePath();//输出绝对路径
boolean delete = f.delete();//删除
f.deleteOnExit();//在进程结束时删除
String absolutePath = f.getAbsolutePath();//上一次修改的时间戳
boolean mkdir = f.mkdir();//创建目录,只能在最上级的空目录下 否则失败
boolean mkdirs = f.mkdirs();//创建目录
File[] files = f.listFiles();//列出文件
File[] file2=f.listFiles((file,name)->name.matches(".*\.txt"));列出txt文件
File[] file3=f.listFiles(file->file.isFile());//
File src=new File("文件路径");
boolean renameTo = src.renameTo(路径);//移动(根据路径可能会改名)
File tempFirst = File.createTempFile("tempFirst", ".后缀")
try {
File tempFirst = File.createTempFile("tempFirst",后缀/创建临时文件
System.out.println(tempFirst);//C:....AppDataLocalTemptempFirst2744633952213336076.txt
}
catch (IOException e)
{
e.printStackTrace();
}
字符流: java.io.*
输入:Reader
FileReader fr=new FileReader("C:\Users\18915\Desktop\11.tx
int read=fr,read(char[] arr);//read为单次实际读取的字符数,只会覆盖前面
输出:Writer
final String PATH="路径";
Scanner input=new Scanner(System.in);
//true表示继续追加 false表示覆盖 不可逆
BufferedWriter bw = new BufferedWriter(new FileWriter(PATH, true),1024); while(true){ String line=input.nextLine(); bw.write(line); bw.newLine();
if (line.equals("EXIT")){
break;
}
// bw.flush();
bw.close();
}
字节流:
输入:InputStream
输出:OutputStream
static void close(AutoCloseable... acs) {
for (AutoCloseable ac : acs) {
try {
ac.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
//单个文件拷贝
final String SRC_PATH = "C:\Users\...\Desktop\iff\Collection.png";
final String DST_PATH = "C:\Users\....\Desktop\iff\121.png";
final int M=1024*1024;
final int BUFFER_SIZE=128*1024*1024;
final long FILE_SIZE=new File(SRC_PATH).length();
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new java.io.FileInputStream(SRC_PATH),BUFFER_SIZE);
bos = new BufferedOutputStream(new java.io.FileOutputStream(DST_PATH),BUFFER_SIZE);
byte[] bytes=new byte[16*M];
int read =-1;
float total=0;
long begin=System.currentTimeMillis();
while(-1!=(read=bis.read(bytes))){
bos.write(bytes,0,read);
total+=read;
System.out.println(total/FILE_SIZE);
}
bos.flush();
System.out.println((System.currentTimeMillis()-begin)/1000.0);
} catch (FileNotFoundException e) {
e.printStackTrace();//找不到路径
} catch (IOException e) {
e.printStackTrace();
} finally {
close(bos, bis);
}
序列化和反序列化
字符集:
utf-8:汉字占三字节
gbk :汉字占两个字节
byte[ ] bytes=str.getBytes(CharSet cs);
String str=new String(byte[] bytes,CharSet cs);
概念:传输数据的通道
分类:
内容:字符流 、字节流
方向:输入流、 输出流
功能:节点流、处理流(直接或间接继承节点流)
特性(数据源):文件流、网络流
流的释放顺序:和流的创建顺序相反。
程序在内存中运行,文件在磁盘上,把文件从磁盘上读入内存中来,这就需要输入流。反之,把内存中的数据写到磁盘上的文件里就需要输出流。
文件:java..io.File
文件路径(不可以出现空格中文):
相对路径:相对于当前工程(测试环境(工程的根目录)、运行环境)
绝对路径:相对于分区(从c d盘.....)
File f=new File("路径");
boolean exist=f.exists();//判断是否存在该路径
System.out.println(exist);
true boolean isFile = f.isFile();//是否是文件
boolean isDir=f.isDirectory();//是否是目录
boolean isAbs=f.isAbsolute();//是否是绝对路径
boolean canRead = f.canRead();//能否读
boolean canWrite = f.canWrite();//能否写
boolean canExecute = f.canExecute();//是否有权限执行
boolean hidden = f.isHidden();//是否是隐藏
String fileName = f.getName();//输出文件名
String path = f.getPath();//输出路径
String absolutePath = f.getAbsolutePath();//输出绝对路径
boolean delete = f.delete();//删除
f.deleteOnExit();//在进程结束时删除
String absolutePath = f.getAbsolutePath();//上一次修改的时间戳
boolean mkdir = f.mkdir();//创建目录,只能在最上级的空目录下 否则失败
boolean mkdirs = f.mkdirs();//创建目录
File[] files = f.listFiles();//列出文件
File[] file2=f.listFiles((file,name)->name.matches(".*\.txt"));列出txt文件
File[] file3=f.listFiles(file->file.isFile());//
File src=new File("文件路径");
boolean renameTo = src.renameTo(路径);//移动(根据路径可能会改名)
File tempFirst = File.createTempFile("tempFirst", ".后缀")
try {
File tempFirst = File.createTempFile("tempFirst",后缀/创建临时文件
System.out.println(tempFirst);//C:....AppDataLocalTemptempFirst2744633952213336076.txt
}
catch (IOException e)
{
e.printStackTrace();
}
字符流: java.io.*
输入:Reader
FileReader fr=new FileReader("C:\Users\18915\Desktop\11.tx
int read=fr,read(char[] arr);//read为单次实际读取的字符数,只会覆盖前面
输出:Writer
final String PATH="路径";
Scanner input=new Scanner(System.in);
//true表示继续追加 false表示覆盖 不可逆
BufferedWriter bw = new BufferedWriter(new FileWriter(PATH, true),1024); while(true){ String line=input.nextLine(); bw.write(line); bw.newLine();
if (line.equals("EXIT")){
break;
}
// bw.flush();
bw.close();
}
字节流:
输入:InputStream
输出:OutputStream
static void close(AutoCloseable... acs) {
for (AutoCloseable ac : acs) {
try {
ac.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
//单个文件拷贝
final String SRC_PATH = "C:\Users\...\Desktop\iff\Collection.png";
final String DST_PATH = "C:\Users\....\Desktop\iff\121.png";
final int M=1024*1024;
final int BUFFER_SIZE=128*1024*1024;
final long FILE_SIZE=new File(SRC_PATH).length();
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new java.io.FileInputStream(SRC_PATH),BUFFER_SIZE);
bos = new BufferedOutputStream(new java.io.FileOutputStream(DST_PATH),BUFFER_SIZE);
byte[] bytes=new byte[16*M];
int read =-1;
float total=0;
long begin=System.currentTimeMillis();
while(-1!=(read=bis.read(bytes))){
bos.write(bytes,0,read);
total+=read;
System.out.println(total/FILE_SIZE);
}
bos.flush();
System.out.println((System.currentTimeMillis()-begin)/1000.0);
} catch (FileNotFoundException e) {
e.printStackTrace();//找不到路径
} catch (IOException e) {
e.printStackTrace();
} finally {
close(bos, bis);
}



