一、File

1.1、File概述

文件和目录路径名的抽象表示形式。

用户界面和操作系统使用与系统相关的路径名字符串 来命名文件和目录。此类呈现分层路径名的一个抽象的、与系统无关的视图。抽象路径名 有两个组件:

  1. 一个可选的与系统有关的前缀 字符串,比如盘符,"/" 表示 UNIX 中的根目录,"\\\\" 表示 Microsoft Windows UNC 路径名。
  2. 零个或更多字符串名称 的序列。

字段摘要
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。

1.2、File创建与删除

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.txt
System.out.println("f2="+f2);//d:\abc\b.txt
System.out.println("f3="+f3);//d:\bcd\c.txt
System.out.println("f4="+f4);//d:\abc\d.txt }
}

创建文件

//创建文件,在指定位置创建文件,如果该文件已经存在,则不创建,返回 false
public 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() { @Override
public 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");
//获取全部key
Set<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;
}
}
//次数+1
count++;
//把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>() { @Override
public FileInputStream nextElement() { return it.next();
}
@Override
public 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与合并、分割流的更多相关文章

  1. 【java基础学习】IO流

    IO流 字节流InputStream和OutputStream 字符流Writer和Reader 装饰模式

  2. JAVA基础学习之路(三)类定义及构造方法

    类的定义及使用 一,类的定义 class Book {//定义一个类 int price;//定义一个属性 int num; public static int getMonney(int price ...

  3. JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API

    森林森 一份耕耘,一份收获 博客园 首页 新随笔 联系 管理 订阅 随笔- 397  文章- 0  评论- 78  JAVA基础学习day16--集合三-Map.HashMap,TreeMap与常用A ...

  4. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

  5. Java基础学习笔记总结

    Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...

  6. Java基础学习中一些词语和语句的使用

    在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看brea ...

  7. 转载-java基础学习汇总

    共2页: 1 2 下一页  Java制作证书的工具keytool用法总结 孤傲苍狼 2014-06-24 11:03 阅读:25751 评论:3     Java基础学习总结——Java对象的序列化和 ...

  8. java基础学习总结——java环境变量配置(转)

    只为成功找方法,不为失败找借口! 永不放弃,一切皆有可能!!! java基础学习总结——java环境变量配置 前言 学习java的第一步就要搭建java的学习环境,首先是要安装 JDK,JDK安装好之 ...

  9. [转帖]java基础学习总结——多态(动态绑定)

    https://www.cnblogs.com/xdp-gacl/p/3644035.html 多态的概念 java基础学习总结——多态(动态绑定) 一.面向对象最核心的机制——动态绑定,也叫多态

  10. Java基础学习(3)

    Java基础学习(三) Java异常 Throwable类:所有异常的祖先类 Error:虚拟机异常.内存错误.没法处理 Exception:编码.环境.用户操作输入出现问题 非检查异常(自动捕获): ...

随机推荐

  1. Java获取路径方法&相对路径读取xml文件方法

    (1).request.getRealPath("/");//不推荐使用获取工程的根路径 (2).request.getRealPath(request.getRequestURI ...

  2. MongoDB的学习--文档的插入、删除和更新

    最近在看<MongoDB权威指南>,写博客记录一下相关内容~~ 关于安装之类的最基本的就不多说了,从基本操作增删改查开始. MongoDB官网地址:http://www.mongodb.o ...

  3. Linux文件查找工具之find “大宝剑”--转载

    原文地址:http://xinzong.blog.51cto.com/10018904/1749465 一.文件查找工具常用软件 locate: locate命令其实是find -name的另一种写法 ...

  4. Supervisor – 用于 Unix 系统的进程监控工具

    Supervisor 是一个客户端/服务端模式的系统,使用户能够监视和控制 UNIX 操作系统的进程.Supervisor 为你提供一个地方来启动,停止和监视进程.进程可以单独或成组的形式控制.您还可 ...

  5. 创意欣赏:20幅字体排版(Typography)素描

    通常我们都只关注最终的作品,但其实幕后还有很多的过程,其中一个是素描.素描用来表达最初思想观念的原型.有时客户需要一个独特的品牌新LOGO或字体,这时先绘制在纸上是比较方便的,之后扫描到 Photos ...

  6. LeetCode-95. Unique Binary Search Trees II

    Description: Given n, generate all structurally unique BST's (binary search trees) that store values ...

  7. js代码中的闭包

    作为一个后台开发人员了解前端非常重要,尤其是深处学校实验室做项目时前端把写好的代码直接给你,然后你在修改的时候.我经常做的就是修改前端的代码的HTML和后台交互的部分以及js的ajax部分,之后修改之 ...

  8. [阅读]个人阅读作业week7(200)

    个人作业week7——前端开发感想总结 此次作业因本人(学号1200)长期不上博客所以密码遗忘,输错次数过多账号被锁,所以在SivilTaram同学的博客下挂我的作业,希望助教老师谅解~谢谢! 1. ...

  9. HTTP Cookie/Session

    一.HTTP协议 HTTP协议是一个无状态协议,服务器无法判断若干个请求是否来自同一个浏览器,无法与浏览器进行会话. 二.HTTP会话控制:Cookie Cookie技术是使用在浏览器端的一种缓存技术 ...

  10. sprint 1 2 3 贡献分

    本学期我们做的项目是商品和员工管理系统(茗仕茶业管理平台) 团队Github地址:https://github.com/LinWenFeng团队博客地址:http://www.cnblogs.com/ ...