我如何编写我已经在Java中的特定目录中创建的批处理文件?

时间:2012-03-08 20:59:32

标签: java file-handling buffer

我正在尝试将这个程序写入用户计算机,但实际上遇到了麻烦,我想写一个名为desktop.bat的文件到c:/目录但是它看起来好像没有用。这是代码:

package javawriter;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class JavaWriterObject {

    public void TryThis(){
    try{

        File file = new File("C:\\Desktop.bat");

        if (file.exists()){
                System.out.println("The file exists \ndirectory is found");
        }else{
            System.out.println("file is not found yet ".concat("file will be created"));
            file.createNewFile();
        }

        FileWriter out = new FileWriter(file);
        BufferedWriter writer = new BufferedWriter(out);
        writer.write();

        writer.close();

        }catch(IOException e){
                e.printStackTrace();
        }
   }
}

我是否必须为writer.write();编写字符串,或者我可以在哪里编写我想要的文件?

2 个答案:

答案 0 :(得分:3)

Java 7的Files.copy方法可以帮助您copy a file from one location to another

如果您使用的是旧版Java,则需要自己阅读原始文件并将其内容复制到新文件中,否则您将需要使用第三方库。有关几个好的解决方案,请参阅this question的答案,包括使用Apache Commons IO FileUtils或仅使用标准Java API。

一旦确定了要复制文件的方式,就可能遇到另一个问题。默认情况下,Windows 7将阻止您写入某些目录,例如C:\。您可以尝试写入其他目录,例如临时目录或用户主目录中的任何位置。如果您必须写入C:\,最简单的解决方案(除了在Windows中提前创建文件并在程序中覆盖它,这可能会破坏目的)是禁用UAC并确保您的用户帐户具有写入权限那个目录 - 当然,这有安全隐患。

答案 1 :(得分:1)

您必须从某处获取要写入的内容,或者是应用程序中的字符串文字,或者首选方法来自资源(与应用程序捆绑在一起)。 YourClass.class.getResourceAsStream(name)

将输入流复制到文件需要付出一些努力Guava can copy,但是,如果你使用的是番石榴,你也可以copy directly from the resource to the file