日期:2014-05-20 浏览次数:21159 次
public int upload(InputStream in, String newname) throws IOException {
TelnetOutputStream os = null;
byte[] bytes = new byte[1024];
try {
newname = newname.substring(newname.lastIndexOf("/")+1);//获取文件名称
os = ftpClient.put(newname);
int c;
while ((c = in.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
} catch (IOException e) {
e.printStackTrace();
return 0;
}
os.flush();
in.close();
os.close();
//ftpClient.closeServer();
bytes = null;
return 1;
}
/**
* 创建及寻找需要上传文件的目录
* @param path
* @return boolean
* 如果有违例,请使用@exception/throws [违例类型] [违例说明:异常的注释必须说明该异常的含义及什么条件下抛出该
* @see [类、类#方法、类#成员]
*/
public boolean isDirExist(String path) {
try {
ftpClient.cd(path);//进入需要上传文件的目录
} catch (IOException e) {
ftpClient.sendServer("MKD " + path + "\r\n");//如果该目录不存在,则创建
try {
ftpClient.cd(path); //进入需要上传文件的目录
ftpClient.readServerResponse();
} catch (IOException e1) {
e1.printStackTrace();
}
}
return true;
}
------解决方案--------------------
其实就是获得
number/1/1/1/1/1/1/1/1/1
number/1/1/1/1/1/1/1/1/2
number/1/1/1/1/1/1/1/1/3
...
number/9/9/9/9/9/9/9/9/9
这样的路径组合,所以循环处理一下就可以了,获得这样的字符串,直接调用File的mkdirs就可以了,不用每一层都去自己mkdir
for example
File root = new File("/number"); //number目录
if (root.exists() && root.isFile()) { //如果该文件存在并且是个文件,则删除,否则没法建目录
root.delete();
}
if (! root.exists()) { //如果该文件不存在,则创建number目录
root.mkdir();
}
//一下是循环,创建子目录,就是获取子目录组合的字符串,调用File的mkdirs方法
int deep = 9;
int[] range = {1,2,3,4,5,6,7,8,9};
int[] idx = new int[deep];
StringBuilder buf = new StringBuilder();
while (idx[0] < range.length) {
buf.delete(0, buf.length());
buf.append(root.getPath());
for (int i=0; i<idx.length; i++) {
buf.append("/").append(range[idx[i]]);
}
File dir = new File(buf.toString());
dir.mkdirs();
idx[idx.length-1]++;
for (int i=idx.length-1; i>0; i--) {
if (idx[i] == range.length) {
idx[i] = 0;
idx[i]++;
} else {
break;
}
}
}
------解决方案--------------------
不是代码问题,是文件太多了。
一棵满九叉树,九的九次方个。我只做了三叉:
import java.io.*;
public class Test {
static final int N = 3;
public static void main(String[] args) {
String s0 = "d:/number";
File f = new File(s0);
if (!f.exists()) {
f.mkdir();
}
for (int i = 1; i <= N; i++) {
String s1 = new String(s0 + "/" + i);
// mkd(s1);
for (int j = 1; j <= N; j++) {
String s2 = new String(s1 + "/" + j);
// mkd(s2);
for (int k = 1; k <= N; k++) {
String s3 = new String(s2 + "/" + k);
mkd(s3);
}
}
}
}
static void mkd(String s) {
File f = new File(s);
f.mkdirs();
//System.out.println(s);
}
}