JAVA基础学习day21--IO流三-File、Properties、PrintWriter与合并、分割流
一、File
1.1、File概述
文件和目录路径名的抽象表示形式。
用户界面和操作系统使用与系统相关的路径名字符串 来命名文件和目录。此类呈现分层路径名的一个抽象的、与系统无关的视图。抽象路径名 有两个组件:
- 一个可选的与系统有关的前缀 字符串,比如盘符,
"/"
表示 UNIX 中的根目录,"\\\\"
表示 Microsoft Windows UNC 路径名。 - 零个或更多字符串名称 的序列。
字段摘要 | |
---|---|
static String
|
pathSeparator 与系统有关的路径分隔符,为了方便,它被表示为一个字符串。 |
static char
|
pathSeparatorChar 与系统有关的路径分隔符。 |
static String
|
separator 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。 |
static char
|
separatorChar 与系统有关的默认名称分隔符。 |
构造方法摘要 | |
---|---|
File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
|
|
File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
|
|
File(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
|
|
File(URI uri) 通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。 |
方法摘要 | |
---|---|
boolean
|
canExecute() 测试应用程序是否可以执行此抽象路径名表示的文件。 |
boolean
|
canRead() 测试应用程序是否可以读取此抽象路径名表示的文件。 |
boolean
|
canWrite() 测试应用程序是否可以修改此抽象路径名表示的文件。 |
int
|
compareTo(File pathname) 按字母顺序比较两个抽象路径名。 |
boolean
|
createNewFile() 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。 |
static File
|
createTempFile(String prefix, String suffix) 在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。 |
static File
|
createTempFile(String prefix, String suffix, File directory) 在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。 |
boolean
|
delete() 删除此抽象路径名表示的文件或目录。 |
void
|
deleteOnExit() 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。 |
boolean
|
equals(Object obj) 测试此抽象路径名与给定对象是否相等。 |
boolean
|
exists() 测试此抽象路径名表示的文件或目录是否存在。 |
File
|
getAbsoluteFile() 返回此抽象路径名的绝对路径名形式。 |
String
|
getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。 |
File
|
getCanonicalFile() 返回此抽象路径名的规范形式。 |
String
|
getCanonicalPath() 返回此抽象路径名的规范路径名字符串。 |
long
|
getFreeSpace() 返回此抽象路径名指定的分区中未分配的字节数。 |
String
|
getName() 返回由此抽象路径名表示的文件或目录的名称。 |
String
|
getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null 。
|
File
|
getParentFile() 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null 。
|
String
|
getPath() 将此抽象路径名转换为一个路径名字符串。 |
long
|
getTotalSpace() 返回此抽象路径名指定的分区大小。 |
long
|
getUsableSpace() 返回此抽象路径名指定的分区上可用于此虚拟机的字节数。 |
int
|
hashCode() 计算此抽象路径名的哈希码。 |
boolean
|
isAbsolute() 测试此抽象路径名是否为绝对路径名。 |
boolean
|
isDirectory() 测试此抽象路径名表示的文件是否是一个目录。 |
boolean
|
isFile() 测试此抽象路径名表示的文件是否是一个标准文件。 |
boolean
|
isHidden() 测试此抽象路径名指定的文件是否是一个隐藏文件。 |
long
|
lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间。 |
long
|
length() 返回由此抽象路径名表示的文件的长度。 |
String[]
|
list() 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。 |
String[]
|
list(FilenameFilter filter) 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。 |
File[]
|
listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 |
File[]
|
listFiles(FileFilter filter) 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。 |
File[]
|
listFiles(FilenameFilter filter) 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。 |
static File[]
|
listRoots() 列出可用的文件系统根。 |
boolean
|
mkdir() 创建此抽象路径名指定的目录。 |
boolean
|
mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。 |
boolean
|
renameTo(File dest) 重新命名此抽象路径名表示的文件。 |
boolean
|
setExecutable(boolean executable) 设置此抽象路径名所有者执行权限的一个便捷方法。 |
boolean
|
setExecutable(boolean executable, boolean ownerOnly) 设置此抽象路径名的所有者或所有用户的执行权限。 |
boolean
|
setLastModified(long time) 设置此抽象路径名指定的文件或目录的最后一次修改时间。 |
boolean
|
setReadable(boolean readable) 设置此抽象路径名所有者读权限的一个便捷方法。 |
boolean
|
setReadable(boolean readable, boolean ownerOnly) 设置此抽象路径名的所有者或所有用户的读权限。 |
boolean
|
setReadOnly() 标记此抽象路径名指定的文件或目录,从而只能对其进行读操作。 |
boolean
|
setWritable(boolean writable) 设置此抽象路径名所有者写权限的一个便捷方法。 |
boolean
|
setWritable(boolean writable, boolean ownerOnly) 设置此抽象路径名的所有者或所有用户的写权限。 |
String
|
toString() 返回此抽象路径名的路径名字符串。 |
URI
|
toURI() 构造一个表示此抽象路径名的 file: URI。 |
URL
|
toURL() 已过时。 此方法不会自动转义 URL 中的非法字符。建议新的代码使用以下方式将抽象路径名转换为 URL:首先通过 toURI 方法将其转换为 URI,然后通过 URI.toURL 方法将 URI 装换为 URL。
|
import java.io.*; class FileDemo1 {public static void main(String[] args) {method1();}public static void method1(){//创建File对象File f1=new File("a.txt");//第二种File f2=new File("d:\\abc","b.txt");//第三种File dir=new File("d:\\bcd");File f3=new File(dir,"c.txt");//使用分隔符File f4=new File("d:"+File.separator+"abc"+File.separator+"d.txt");//输出System.out.println("f1="+f1);//a.txtSystem.out.println("f2="+f2);//d:\abc\b.txtSystem.out.println("f3="+f3);//d:\bcd\c.txtSystem.out.println("f4="+f4);//d:\abc\d.txt } }
创建文件
//创建文件,在指定位置创建文件,如果该文件已经存在,则不创建,返回 falsepublic static void method1() throws IOException{File f=new File("d:\\file.txt");//创建sop("create: "+f.createNewFile());//删除,删除失败返回false//sop("delete:"+f.delete());//在退出时删除指定文件 f.deleteOnExit();}
1.3、File判断 File获取
package com.pb.day20.io.file;import java.io.File; import java.io.IOException;public class FileDemo2 {public static void main(String[] args) throws IOException {File f1=new File("d:\\a.txt");File f2=new File("e:\\c.txt");File dir1=new File("d:\\dbc");File dir2=new File("d:\\dbc\\dd\\aa\\d\\f\\dsf\\fsd");//判断文件是否存在,不存在就创建if(!f1.exists()){f1.createNewFile();}//判断文件夹是否存在if(!dir1.exists()){dir1.mkdir();//创建一层文件夹 }//创建多层文件夹if(!dir2.exists()){dir2.mkdirs();}//判断sop("f1是文件吗?"+f1.isFile());sop("dir1是文件夹吗?"+dir1.isDirectory());sop("f1是可执行文件吗?"+f1.canExecute());sop("f1可读吗?"+f1.canRead());sop("f1可写吗?"+f1.canWrite());sop("f1是隐藏文件吗?"+f1.isHidden());//获取文件信息sop(f1.getName());//文件名sop(f1.getPath());//相对路径sop(f1.getAbsolutePath());//获取绝对路径,返回值是字符串sop(f1.getAbsoluteFile());//获取绝对路径,返回值是File类对象sop(f1.lastModified());//最后修改时间 长整型sop(f1.length());//文件字节大小,长整型//重命名sop(f1.renameTo(f2));//剪切的作用 }public static void sop(Object obj){System.out.println(obj);}}
1.4、File文件列表
package com.pb.day20.io.file;import java.io.File; import java.io.FilenameFilter;public class FileDemo3 {public static void main(String[] args) {method3();}//列出当前目录下的指定文件public static void method3(){File f=new File("d:\\");File [] files=f.listFiles(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {//返回txt文件return name.endsWith(".txt");}});for(File ff:files){System.out.println(ff.getName()+"..."+ff.length());}}//列表当前目录下的所有文件包含文件夹名字public static void method2(){File f=new File("c:\\");String [] names=f.list();//必须是目录,否则就是空指针异常for(String s:names){System.out.println(s);}}//列出当前系统的所有盘符public static void method1(){File [] files=File.listRoots();for(File f:files){System.out.println(f);}}}
1.6、File列出所有递归
package com.pb.day20.io.file; /*** 递归调用,* 列表指定目录下的,所有文件包括子目录中的文件*/ import java.io.File;public class FileDemo4 {public static void main(String[] args) {File dir=new File("d:\\");getFiles(dir);}//递归public static void getFiles(File dir){System.out.println(dir);//获取文件数组,列表File[] files=dir.listFiles();//遍历for(File file:files){//判断是不是文件夹if(file.isDirectory()){//是文件夹就再次调用 getFiles(file);}else{//不是就列表 System.out.println(file);}}}}
递归:
限定条件
注意递归的次数,尽量避免内存溢出
1.7、File删除带文件的目录
package com.pb.day20.io.file;import java.io.File;public class FileDemo5 {public static void main(String[] args) {File dir=new File("d:\\kk");removeDir(dir);}//删除,带有文件的多层文件夹public static void removeDir(File dir){File [] files =dir.listFiles();for(int x=0;x<files.length;x++){if(files[x].isDirectory()){removeDir(files[x]);}else{//删除文件System.out.println(files[x]+"----file----"+files[x].delete());}}//删除空文件夹System.out.println(dir+"----dir----"+dir.delete());}}
1.8、将一个文件夹的的所有文件,包含子目录都复制要另一个目录下
/* 将一个文件夹的的所有文件,包含子目录都复制要另一个目录下 */ import java.io.*; class IOCopy {public static void main(String[] args) {//源文件File src=new File("D:\\music");//目的文件File des=new File("e:\\test");copyDir(src,des);System.out.println("复制完成!");}/*递归复制*/public static void copyDir(File src,File des){ //获取列表File[] files=src.listFiles();//判断目标文件是否存在if(!des.exists()){//创建目录 des.mkdir();}//遍历for(File f:files){ //判断是不是目录if(f.isDirectory()){//获取路径,拼接文件名,再次调用自己copyDir(new File(f.getPath()),new File(des+"\\"+f.getName()));//是不是文件}else if (f.isFile()){//复制copyFile(new File(f.getPath()),new File(des+"\\"+f.getName()));}}}//使用IO流复制文件public static void copyFile(File src,File des){BufferedInputStream bis=null;BufferedOutputStream bos=null;try{bis=new BufferedInputStream(new FileInputStream(src));bos=new BufferedOutputStream(new FileOutputStream(des));//声明缓冲区int len=0;while((len=bis.read())!=-1){bos.write(len);}}catch (IOException e){e.printStackTrace(); }finally{try{if(bos!=null)bos.close();}catch (IOException e){e.printStackTrace(); }try{if(bis!=null)bis.close();}catch (IOException e){e.printStackTrace(); }}} }
二、Properties
2.1、Properties概述
构造方法摘要 | |
---|---|
Properties() 创建一个无默认值的空属性列表。 |
|
Properties(Properties defaults) 创建一个带有指定默认值的空属性列表。 |
方法摘要 | |
---|---|
String
|
getProperty(String key) 用指定的键在此属性列表中搜索属性。 |
String
|
getProperty(String key, String defaultValue) 用指定的键在属性列表中搜索属性。 |
void
|
list(PrintStream out) 将属性列表输出到指定的输出流。 |
void
|
list(PrintWriter out) 将属性列表输出到指定的输出流。 |
void
|
load(InputStream inStream) 从输入流中读取属性列表(键和元素对)。 |
void
|
load(Reader reader) 按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。 |
void
|
loadFromXML(InputStream in) 将指定输入流中由 XML 文档所表示的所有属性加载到此属性表中。 |
Enumeration<?>
|
propertyNames() 返回属性列表中所有键的枚举,如果在主属性列表中未找到同名的键,则包括默认属性列表中不同的键。 |
void
|
save(OutputStream out, String comments) 已过时。 如果在保存属性列表时发生 I/O 错误,则此方法不抛出 IOException。保存属性列表的首选方法是通过 store(OutputStream out, String comments) 方法或 storeToXML(OutputStream os, String comment) 方法来进行。
|
Object
|
setProperty(String key, String value) 调用 Hashtable 的方法 put 。
|
void
|
store(OutputStream out, String comments) 以适合使用 load(InputStream) 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。
|
void
|
store(Writer writer, String comments) 以适合使用 load(Reader) 方法的格式,将此 Properties 表中的属性列表(键和元素对)写入输出字符。
|
void
|
storeToXML(OutputStream os, String comment) 发出一个表示此表中包含的所有属性的 XML 文档。 |
void
|
storeToXML(OutputStream os, String comment, String encoding) 使用指定的编码发出一个表示此表中包含的所有属性的 XML 文档。 |
Set<String>
|
stringPropertyNames() 返回此属性列表中的键集,其中该键及其对应值是字符串,如果在主属性列表中未找到同名的键,则还包括默认属性列表中不同的键。 |
Properties
类表示了一个持久的属性集。Properties
可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。
2.2、存取功能
public static void setAndGet(){//声明Properties prop=new Properties();//设置prop.setProperty("username", "root");prop.setProperty("password","root");//获取用户名对应的值System.out.println(prop.getProperty("username"));//修改密码prop.setProperty("password","root123");//获取全部keySet<String> keys=prop.stringPropertyNames();//遍历for(String s:keys){System.out.println(s+": "+prop.getProperty(s));}}
2.3、存取配置文件
public static void method2() throws IOException {// 声明Properties集合Properties prop = new Properties();FileInputStream fis = new FileInputStream("D:/info.txt");FileOutputStream fos = new FileOutputStream("D:\\info.txt");//加载数组到集合 prop.load(fis);System.out.println(prop);prop.list(System.out);//修改prop.setProperty("sex", "woman");prop.store(fos, "sex is woman");System.out.println(prop);fos.close();fis.close();}public static void method1() throws IOException {// 文件流BufferedReader br = new BufferedReader(new FileReader("D:\\info.txt"));// 声明Properties集合Properties prop = new Properties();String line = null;// 遍历while ((line = br.readLine()) != null) {// System.out.println(line);String[] arr = line.split("=");// System.out.println(arr[0]+"..."+arr[1]);prop.setProperty(arr[0], arr[1]);}System.out.println(prop);br.close();}
示例
public static void method() throws IOException{File file=new File("a.txt");//判断文件是否存在if(!file.exists()){file.createNewFile();}FileInputStream fis=new FileInputStream(file);//声明集合Properties prop=new Properties();prop.load(fis);int count=0;String value=prop.getProperty("times");if(value!=null){count=Integer.parseInt(value);//判断次数if(count>=5){System.out.println("使用次数已经用完,请续费!");return;}}//次数+1count++;//把KEY和VALUE放回去prop.setProperty("times", count+"");FileOutputStream fos=new FileOutputStream(file);prop.store(fos, "次数+1");fos.close();fis.close();}
三、PrintWriter与序列流
3.1、PrintWriter与PrintStream
package com.pb.io.properties.demo1;import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter;/*** 从键盘接收数据,并输出在控制台* 使用PrintWriter**/ public class PrintWriterDemo {public static void main(String[] args) throws IOException {//从键盘接收数据,并输出在控制台BufferedReader br=new BufferedReader(new InputStreamReader(System.in));//使用打印流输出,并自动刷新PrintWriter pw=new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)),true);String line=null;System.out.println("请输入内容,以over结束!");while((line=br.readLine())!=null){if("over".equals(line)){break;}pw.println(line);}pw.close();br.close();}}
3.2、序列流--SequenceInputStream
SequenceInputStream
表示其他输入流的逻辑串联。它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。
构造方法摘要 | |
---|---|
SequenceInputStream(Enumeration<? extends InputStream> e) 通过记住参数来初始化新创建的 SequenceInputStream ,该参数必须是生成运行时类型为 InputStream 对象的 Enumeration 型参数。
|
|
SequenceInputStream(InputStream s1, InputStream s2) 通过记住这两个参数来初始化新创建的 SequenceInputStream (将按顺序读取这两个参数,先读取 s1 ,然后读取 s2 ),以提供从此 SequenceInputStream 读取的字节。
|
方法摘要 | |
---|---|
int
|
available() 返回不受阻塞地从当前底层输入流读取(或跳过)的字节数的估计值,方法是通过下一次调用当前底层输入流的方法。 |
void
|
close() 关闭此输入流并释放与此流关联的所有系统资源。 |
int
|
read() 从此输入流中读取下一个数据字节。 |
int
|
read(byte[] b, int off, int len) 将最多 len 个数据字节从此输入流读入 byte 数组。
|
四、合并流
4.1、合并流
package com.pb.io.properties.demo1;import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.SequenceInputStream; import java.util.Enumeration; import java.util.Vector;public class SequenceDemo {public static void main(String[] args) throws IOException {Vector<FileInputStream> v=new Vector<FileInputStream>();v.add(new FileInputStream("d:\\1.txt"));v.add(new FileInputStream("d:\\2.txt"));v.add(new FileInputStream("d:\\3.txt"));//转换为枚举Enumeration<FileInputStream> en=v.elements();//合并流SequenceInputStream sis=new SequenceInputStream(en);//目标文件FileOutputStream fos=new FileOutputStream("d:\\4.txt");//声明缓冲区byte[] buf=new byte[1024];int len=0;while((len=sis.read(buf))!=-1){fos.write(buf,0,len);}fos.close();sis.close();}}
五、分割流
5.1、分割流
package com.pb.io.properties.demo1;import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.SequenceInputStream; import java.util.ArrayList; import java.util.Enumeration; import java.util.Iterator;/*** 将文件切割* 再合并**/ public class SplitDemo {public static void main(String[] args) throws IOException {//split(); merge();}//合并public static void merge() throws IOException{File src=new File("D:\\split");File [] files=src.listFiles();ArrayList<FileInputStream> list=new ArrayList<FileInputStream>();for(File f:files){list.add(new FileInputStream(f));}Iterator<FileInputStream> it=list.iterator();//创建枚举Enumeration<FileInputStream> en=new Enumeration<FileInputStream>() {@Overridepublic FileInputStream nextElement() {return it.next();}@Overridepublic boolean hasMoreElements() {return it.hasNext();}};//创建合并流SequenceInputStream sis=new SequenceInputStream(en);FileOutputStream fos=new FileOutputStream("D:\\split\\t.mp3");byte[] buf=new byte[1024];int len=0;while((len=sis.read(buf))!=-1){fos.write(buf,0,len);}fos.close();sis.close();}//切割public static void split() throws IOException{//源文件File file=new File("D:\\gm.mp3");FileInputStream fis=new FileInputStream(file);//目标FileOutputStream fos=null;//缓冲区byte[] buf=new byte[1024*1024];int len=0;int count=1;while((len=fis.read(buf))!=-1){fos=new FileOutputStream("D:\\split\\"+(count++)+".part");fos.write(buf,0,len);}fos.close();fis.close();}}
JAVA基础学习day21--IO流三-File、Properties、PrintWriter与合并、分割流相关推荐
- java 基础学习——基本语法(三)
十五.Java条件语句之 if 生活中,我们经常需要先做判断,然后才决定是否要做某件事情.例如,如果考试成绩大于 90 分,则奖励一个 IPHONE 5S .对于这种"需要先判断条件,条件满 ...
- JAVA基础学习之路(三)类定义及构造方法
类的定义及使用 一,类的定义 class Book {//定义一个类int price;//定义一个属性int num;public static int getMonney(int price, i ...
- java基础学习_IO流03_字符流、IO流小结、案例_day21总结
java基础学习_IO流03_字符流.IO流小结.案例_day21总结 ================================================================ ...
- Java基础学习—— IO流
Java基础学习-- IO流 1 文件 1.1 文件的创建 1.2 文件常用的方法 2 IO流 2.1 FileInputStream 2.2 FileOutputStream 2.3 文件的拷贝 2 ...
- Java基础学习:尚硅谷项目三 开发团队调度软件
Java基础学习:尚硅谷项目三 开发团队调度软件 一.软件功能与结构设计 1. 软件功能 该软件实现以下功能: 软件启动时,根据给定的数据创建公司部分成员列表(数组) 根据菜单提示,基于现有的公司成员 ...
- 尚学堂JAVA基础学习笔记_2/2
尚学堂JAVA基础学习笔记_2/2 文章目录 尚学堂JAVA基础学习笔记_2/2 写在前面 第10章 IO技术 1. IO入门 2. IO的API 3. 装饰流 4. IO实战 5. CommonsI ...
- Java基础学习——第十四章 网络编程
Java基础学习--第十四章 网络编程 一.网络编程概述 计算机网络: 把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大.功能强的网络系统,从而使众多的计算机可以方便地互相传递信 ...
- JAVA基础学习精简心得笔记整理
JAVA基础学习精简心得笔记整理 配置java环境变量 Java的运行过程 基本数据类型 引用数据类型 逻辑运算符 数组 方法重载 封装 继承 多态 多态的作用 单例设计模式 接口interface ...
- Java基础学习——第十六章 Java8新特性
Java基础学习--第十六章 Java8 新特性 Java8(JDK8.0)较 JDK7.0 有很多变化或者说是优化,比如 interface 里可以有静态方法和默认方法,并且可以有方法体,这一点就颠 ...
- Java基础学习(12)
Java基础学习 一.不可变集合 二.Stream流 2.1 Stream流数据添加 2.2 Stream流的中间方法 2.3 Stream终结方法 三. 方法引用 3.1 方法引用的基本概念 3.2 ...
最新文章
- 深度丨如果机器人三定律被打破,我们可以做些什么?
- 常用的排序算法的时间复杂度和空间复杂度
- python多线程网络编程_python之网络编程-多线程
- 什么叫中断隐指令,具体做哪三件事呢?
- 《我也能做CTO之程序员职业规划》之十三:用凸透镜选择技术
- LightOJ 1055 BFS暴力
- .NET对存储过程的调用抽象封装
- 海外硕士苏明哲回国后哀叹:我美本英硕,找不到工作很难受
- 笑得肚痛!程序猿的 46 张 GIF 搞笑图
- LBP特征提取原理和python库代码
- linux 查看内存大小命令,Linux查看命令:CPU型号,内存大小,硬盘空间
- 关于OriginPRO/Origin画图消锯齿以及平滑点与点之间的连接
- Unity 2D打地鼠游戏
- 《Python自然语言处理》——1.1 语言计算:文本和词汇
- 巨头卡位物联网 纷纷瞄准家庭网关设备
- 大数据面试题以及答案整理(面试必备)
- 《Filter Pruning using Hierarchical Group Sparse》ICPR2020论文详解
- Python+OpenCV图像处理与识别 Step by Step
- 百度竞价排名曝光_全球塑胶网:百度爱采购模式推广效果怎么样?
- Xilinx官网大全__PowerPC 架构
热门文章
- oracle存储过程00054,oracle执行存储过程报错:ORA-12011
- mysql被格式化恢复数据_三种常见数据库文件恢复方法介绍
- lapack安装_VASP环境安装-BoltzTraP-1.2.5安装
- 数组反向遍历ios_LeetCode106.从中序与后序遍历序列构造二叉树(Construct Binary Tree from Inor...)...
- MATLAB基础操作--命令窗口
- matlab 几何概率
- 2018年3月29日笔记
- ssh服务常见问题及其解决办法
- ActivityLifecycleCallbacks
- 2010 PDC Party @深圳 免费技术交流活动公告