Java程序创建文件,但文件不可见
我有一个程序,它根据命令行输入替换文件中的文本。当前,它创建一个临时文件,并在新的临时文件中写入带有替换文本的字符串。这个程序在我校园计算机实验室的桌面上运行,但当我尝试在我的个人笔记本电脑上运行它时,会创建临时文件,我可以通过打印其规范路径找到它,file.exists返回true,但它不会显示在我的桌面上。 使用Windows资源管理器进行搜索不会产生任何结果 我正在运行Windows7并使用TextPad。有人知道这可能是什么原因吗?我可以提供任何其他必要的信息 编辑:我在MacPro 2011上运行Windows7,如果这有什么区别的话 编辑:我发现了问题。我下载了Comodo防病毒软件,每当我创建一个文件时,它都会在VTRoot文件夹中创建一个用于沙盒目的的文件。我能够改变设置并解决我的问题Java程序创建文件,但文件不可见,java,Java,我有一个程序,它根据命令行输入替换文件中的文本。当前,它创建一个临时文件,并在新的临时文件中写入带有替换文本的字符串。这个程序在我校园计算机实验室的桌面上运行,但当我尝试在我的个人笔记本电脑上运行它时,会创建临时文件,我可以通过打印其规范路径找到它,file.exists返回true,但它不会显示在我的桌面上。 使用Windows资源管理器进行搜索不会产生任何结果 我正在运行Windows7并使用TextPad。有人知道这可能是什么原因吗?我可以提供任何其他必要的信息 编辑:我在MacPro 2
如果您看不到temp.txt文件,那是因为它位于java源代码所在的项目目录中。但是,如果您找到了它,那么它也将不包含任何内容。原因是您没有关闭输出流,以使文件刚好就位 输出。关闭
在while循环之后。尝试通过在创建类似文件时提供整个文件路径来创建文件 文件uri
这将通过将给定的File:URI转换为抽象路径名来创建一个新的文件实例 我发现了这个问题。我下载了Comodo防病毒软件,每当我创建一个文件时,它都会在VTRoot文件夹中创建一个用于沙盒目的的文件。我可以更改设置并解决我的问题。如果您安装了comodo antivirus,则应按照说明操作: 1.打开comodo 2.单击设置 3.然后单击安全壳->单击自动安全壳
4.然后在顶部,取消选中启用自动包含。您确定它没有创建文件吗?你找对地方了吗?让您的程序打印出文件的完整路径,以查看确切的查找位置。例如,调用System.out.printlntemp.getCanonicalPath;在创建临时对象之后。另外,。。。。你的试球区在哪里?如何获得文件I/O异常的通知?这是关键。临时文件的getCanonicalPath返回桌面,这是我的ReplaceText java文件所在的位置。另外,我编辑了catch块只是为了简单地回答我的问题,对不起,我应该在原始帖子中提到这一点。这是否意味着该文件已创建,但它只是没有出现?输出流已通过try with resources语句正确关闭。请查看这篇文章,尝试使用资源,这就是为什么我喜欢在这里学习新东西。感谢@RajasubaSubramanian的回复。请用1编辑代码。使用完整uri和2创建文件。写入后关闭输出流?
import java.io.*;
import java.util.*;
public class ReplaceText{
public static void main(String[] args)throws IOException{
if(args.length != 2){
System.out.println("Incorrect format. Use java ClassName textToReplace filename");
System.exit(1);
}
File source = new File(args[1]);
if(!source.exists()){
System.out.println("Source file " + args[1] + " does not exist.");
System.exit(2);
}
File temp = new File("temp.txt");
try(
Scanner input = new Scanner(source);
PrintWriter output = new PrintWriter(temp);
){
while(input.hasNext()){
String s1 = input.nextLine();
String s2 = s1.replace(args[0], "a");
output.println(s2);
}
}
}
}