日期:2014-05-20 浏览次数:20926 次
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); } }