我写了一个copy文件的方法, 要把一个文件复制到工程下的一个自定义文件夹内使用"./swatch/AddFileJar"  抛出一个java.io.FileNotFoundException 怎么解决? 
不用打绝对路径最好因为方便使用
java.io.FileNotFoundException: .\swatch\AddFileJar\temp (拒绝访问。)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at com.fileAddjar.Main.fileCopy(Main.java:111)
at com.fileAddjar.Main.main(Main.java:83)
Exception in thread "main" java.lang.NullPointerException
at com.fileAddjar.Main.fileCopy(Main.java:122)
at com.fileAddjar.Main.main(Main.java:83)

解决方案 »

  1.   

    怎么又有temp文件夹,不是只使用./swatch/AddFileJar你那个文件放在工程的目录下,还是工程文件夹里,这是相对于你这段代码所在的文件位置确定的,是 ./ 还是../。
      

  2.   

     我的项目目录下swatch/AddFileJar/temp/ 三个自定义的文件夹!
    public class Main {  public static void main(String[] args) throws IOException {fileCopy("F:\\qq.txt","./swatch/AddFileJar/temp/"); //copy文件
    }
    /**
     * 把要添加的文件复制到jar目录
     * 
     * @param sFile
     *            要复制文件所在的目录
     * @param oFile
     *            复制到所在的目录
     */ public static void fileCopy(String sFile, String oFile) {
    File file = new File(sFile); if (!file.exists()) {
    System.out.println(sFile + " not have");
    return;
    }
    File fileb = new File(oFile); if (file.isFile()) {
    FileInputStream fis = null;
    FileOutputStream fos = null;
    try {
    fis = new FileInputStream(file);
    fos = new FileOutputStream(fileb); byte[] bb = new byte[(int) file.length()];
    fis.read(bb);
    fos.write(bb); } catch (IOException e) {
    e.printStackTrace();
    } finally {
    try {
    fis.close();
    fos.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    } else if (file.isDirectory()) {
    if (!fileb.exists()) {
    fileb.mkdir();
    }
    String[] fileList;
    fileList = file.list();
    for (int i = 0; i < fileList.length; i++) {
    fileCopy(sFile + "/" + fileList[i], oFile + "/" + fileList[i]);
    }
    }
    }}