我用java里面的BufferedWriter 和 FileInputStream 去拷贝一个文件,在执行代码写入的时候报系统找不到路径,我单独执行这个拷贝方法能够拷贝成功,但是将这个方法融入到整个程序的时候就 报系统找不到路径。但是这个路径是真实存在的。下面是我的拷贝代码:
--------------------------------
BufferedReader br = new BufferedReader(new FileReader(file));
BufferedWriter bw = new BufferedWriter(new FileWriter("D:/Nets4Auto/" + name + "/result/" + date + "_mds6630log/DetailsInformation.txt",false));

String str = br.readLine();

while(str != null){

bw.write(str);
bw.newLine();

str = br.readLine();
}

-------------------------------------------
try {
FileInputStream fis = new FileInputStream(new File("D:/MDS6630/client/autoput.txt"));
FileOutputStream fos = new FileOutputStream(new File("D:/Nets4Auto/" + name + "/result/" + date + "/DetailsInformation.txt"));

byte[] b = new byte[fis.available()];
fis.read(b);

fos.write(b);

fos.close();
fis.close();

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
--------------------------
用这两种方式拷贝的时候都报错提示是在:BufferedWriter bw = new BufferedWriter(new FileWriter("D:/Nets4Auto/" + name + "/result/" + date + "_mds6630log/DetailsInformation.txt",false));
和FileOutputStream fos = new FileOutputStream(outputString,false);
都是在写入文件的时候报错。

解决方案 »

  1.   


    /**
         * 拷贝文件
         * @param srcFile      源文件对象
         * @param destDir      目标目录
         * @throws UpdateException
         * @JTIDUN
         */
        public static void copyFile(File srcFile, File destFile){
         File destParent = destFile.getParentFile();
         if(!destParent.exists()){
         destParent.mkdirs();
         }    
         BufferedReader reader = null;
            FileOutputStream out = null;
            try {
             destFile.createNewFile();
                reader = new BufferedReader(new FileReader(srcFile));
                out = new FileOutputStream(destFile);
                StringBuffer sb = new StringBuffer();
                String temp = null;
                while ( (temp=reader.readLine()) != null ) {
                 while( temp.endsWith(" ") ){
                 temp = temp.substring(0, temp.length()-1);
                 }
                 sb.append(temp+"\n");
                }
                
                out.write(sb.toString().getBytes());
            }
            catch (IOException ex) {
                LOG.error("Failed to copy the file: " + srcFile.getAbsoluteFile(), ex);
            }
            finally {
                if (out != null) {
                    try {
                        out.close();
                    }
                    catch (Exception ignore) {
                    }
                    finally {
                        out = null;
                    }
                }
                if (reader != null) {
                    try {
                     reader.close();
                    }
                    catch (Exception ignore) {
                    }
                    finally {
                     reader = null;
                    }
                }
                if (destFile.exists()) {
                    try {
                        destFile.setLastModified(srcFile.lastModified());
                    }
                    catch (Exception ignore) {
                    }
                }
            }
        }
      

  2.   

    date 哪来的?单独运行一定是传的死值吧,运行起来date就不对了吧!
      

  3.   

    路径使用双\\,/都用过的。
    dete 是生成的系统时间。在拷贝这个文件之前也同样向这个路径下的文件中拷贝过日子文件,日志文件拷贝成功,但是拷贝这个文件就报系统找不到路径。
    注意:在拷贝的时候这个路径是真实存在的,不会是路径不存在,和文件目录分隔符的影响。在拷贝这个文件的时候前面也想这个路径下拷贝过日志文件就能够拷贝成功。
      

  4.   

    FileOutputStream fos = new FileOutputStream(new File("D:\Nets4Auto\" + name + "\result\" + date + "\DetailsInformation.txt"));用这个试试。
      

  5.   

    date 和name是调用这个方法的时候传进来的两个参数。路径是更具这两个参数拼凑起来的。
    路径是存在的,这个不用考虑,因为我在调用这个拷贝的时候前面也向这个路径下拷贝过日志文件能够拷贝成功。
      

  6.   

    错误信息:
    文件考入的绝对路径是:D:/Nets4Auto/Chengdu_PES_3links_5waves_80FullWave_WSD9_WSM9_7OBUs_noOAU/result/2011-01-21_09-01-32_mds6630log/DetailsInformation.txt
    java.io.FileNotFoundException: D:\Nets4Auto\Chengdu_PES_3links_5waves_80FullWave_WSD9_WSM9_7OBUs_noOAU\result\2011-01-21_09-01-32_mds6630log\DetailsInformation.txt (系统找不到指定的路径。)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
    at DKF37458.SingleTools.copyInformation(SingleTools.java:829)
    at T2000Script.公共功能.D_MDS.D_波分调测(D_MDS.java:328)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:599)
    at com.huawei.ifree.autotest.tdf.testAsset.repository.fs.suitetable.cmd.TCmdStd.execute(TCmdStd.java:423)
    at com.huawei.ifree.autotest.tdf.runner.SuiteTableRunner.visit(SuiteTableRunner.java:123)
    at com.huawei.ifree.autotest.tdf.testAsset.repository.fs.suitetable.cmd.TCmdStd.accept(TCmdStd.java:243)
    at com.huawei.ifree.autotest.tdf.testAsset.repository.fs.suitetable.SuiteTable.accept(SuiteTable.java:84)
    at com.huawei.ifree.autotest.tdf.runner.SuiteTableRunner.run(SuiteTableRunner.java:38)
    at com.huawei.ifree.autotest.tdf.runner.CycleTableRunner.runSuiteTable(CycleTableRunner.java:183)
    at com.huawei.ifree.autotest.tdf.runner.CycleTableRunner.visit(CycleTableRunner.java:139)
    at com.huawei.ifree.autotest.tdf.testAsset.repository.fs.cycletable.cmd.TCmdCdd.accept(TCmdCdd.java:165)
    at com.huawei.ifree.autotest.tdf.testAsset.repository.fs.cycletable.CycleTable.accept(CycleTable.java:85)
    at com.huawei.ifree.autotest.tdf.runner.CycleTableRunner.run(CycleTableRunner.java:84)
    at com.huawei.ifree.autotest.tdf.runner.SetTableRunner.runCycleTable(SetTableRunner.java:743)
    at com.huawei.ifree.autotest.tdf.runner.SetTableRunner.visit(SetTableRunner.java:241)
    at com.huawei.ifree.autotest.tdf.testAsset.repository.fs.settable.cmd.TCmdSet.accept(TCmdSet.java:131)
    at com.huawei.ifree.autotest.tdf.runner.SetTableRunner.visit(SetTableRunner.java:694)
    at com.huawei.ifree.autotest.tdf.testAsset.repository.fs.settable.cmd.TSheetSet.accept(TSheetSet.java:53)
      

  7.   

    at com.huawei.ifree.autotest.tdf.runner.SetTableRunner.execute(SetTableRunner.java:163)
    at com.huawei.ifree.autotest.tdf.runner.SetTableRunner.run(SetTableRunner.java:142)
    at com.huawei.ifree.autotest.tdf.engine.TdfExecutionEngine.runTestAssetInner(TdfExecutionEngine.java:283)
    at com.huawei.ifree.autotest.tdf.engine.TdfExecutionEngine.run(TdfExecutionEngine.java:125)
    at com.huawei.ifree.autotest.CommonLauncher.run(CommonLauncher.java:105)
    at ObjectMapBuilder.testMain(ObjectMapBuilder.java:111)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:599)
    at com.rational.test.ft.sys.FtReflection.invokeMethod2Ext(FtReflection.java:1253)
    at com.rational.test.ft.sys.FtReflection.invokeMethodExt(FtReflection.java:1453)
    at com.rational.test.ft.sys.FtReflection.invokeMethodExt(FtReflection.java:1806)
    at com.rational.test.ft.script.RationalTestScript.runMainInner(RationalTestScript.java:997)
    at com.rational.test.ft.script.RationalTestScript.runMain(RationalTestScript.java:922)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:599)
    at com.rational.test.ft.sys.FtReflection.invokeMethod2Ext(FtReflection.java:1253)
    at com.rational.test.ft.sys.FtReflection.invokeMethodExt(FtReflection.java:1453)
    at com.rational.test.ft.sys.FtReflection.invokeMethodExt(FtReflection.java:1806)
    at com.rational.test.ft.application.ScriptPlayback.runScript(ScriptPlayback.java:731)
    at com.rational.test.ft.application.ScriptPlayback.run(ScriptPlayback.java:669)
    at com.rational.test.ft.application.RationalFtMain.run(RationalFtMain.java:2349)
    at com.rational.test.ft.application.RationalFtMain.main(RationalFtMain.java:329)
    at com.rational.test.ft.application.CommandLineApplication.run(CommandLineApplication.java:40)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:599)
    at org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:574)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:195)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:599)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
    at org.eclipse.core.launcher.Main.main(Main.java:30)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:599)
    at com.rational.test.ft.rational_ft.startFT(rational_ft.java:291)
    at com.rational.test.ft.rational_ft.main(rational_ft.java:185)
      

  8.   

    D:\Nets4Auto\Chengdu_PES_3links_5waves_80FullWave_WSD9_WSM9_7OBUs_noOAU\result\2011-01-21_09-01-32_mds6630log\DetailsInformation.txt --这个路径在你机器里面管理器里面找得到吗?