我正在尝试将这个程序写入用户计算机,但实际上遇到了麻烦,我想写一个名为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();
编写字符串,或者我可以在哪里编写我想要的文件?
答案 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。