我有一个关于在eclipse中编写当前项目的csv文件的问题
public static void Write_Result(String Amount_Time_Dalta) throws IOException{
File file;
FileOutputStream fop = null;
String content = "";
String All_Result[] = Amount_Time_Dalta.split("-");
String path ="/Users/Myname/Documents/workspace/ProjectHelper/"+All_Result[1] + ".csv";
System.out.println(path);
content = All_Result[3]+ "," + All_Result[5] + "\n";
System.out.println(content);
file = new File(path);
fop = new FileOutputStream(file);
file.getParentFile();
if (!file.exists()) {
file.createNewFile();
}
byte[] contentInBytes = content.getBytes();
fop.write(contentInBytes);
fop.flush();
fop.close();
}
我收到错误
Exception in thread "main" java.io.FileNotFoundException: Invalid file path
at java.io.FileOutputStream.<init>(FileOutputStream.java:215)
at java.io.FileOutputStream.<init>(FileOutputStream.java:171)
at FileDistributor.Write_Result(FileDistributor.java:59)
at FileDistributor.main(FileDistributor.java:29)
我用过
String path ="/Users/Myname/Documents/workspace/ProjectHelper/";
读取文件的路径。我工作得很好。 但是,当我使用相同的路径将结果写入文件时(可以存在或不存在。我创建或覆盖文件。)它返回无效的文件路径....我不确定为什么..
更新
刚发现有趣的事情。当我只使用File newTextFile = new File(“1000”.csv);然后它正在工作。但是,当我替换为File newTextFile = new File(filename +“。csv”);它不起作用。
答案 0 :(得分:0)
这里有一个可以创建File对象的有效路径:
/Users/Myname/Documents/workspace/ProjectHelper/
但是如果你第二次看它,你会发现它指的是一个目录,而不是一个可写文件。你的文件名是什么?
System.out.println
所说的All_Result[1]
的价值是什么?
示例代码:
import java.io.IOException;
import java.io.File;
import java.io.FileOutputStream;
public class Test
{
public static void main(String[] args)
{
String[] array = {"1000.csv", "800.csv", "700.csv"};
File file;
FileOutputStream fop;
// Uncomment these two lines
//String path = "c:\\" + array[0];
//file = new File(path);
// And comment these next two lines, and the code still works
String path = "c:\\";
file = new File (path + array[0]);
// Sanity check
System.out.println(path);
try
{
fop = new FileOutputStream(file);
}
catch(IOException e)
{
System.out.println("IOException opening output stream");
e.printStackTrace();
}
if (!file.exists())
{
try
{
file.createNewFile();
}
catch(IOException e)
{
System.out.println("IOException opening creating new file");
e.printStackTrace();
}
}
}
}
为了让这段代码中断,而不是将array[0]
作为文件名传递,只需传入一个空字符串""
,就可以重现错误。
答案 1 :(得分:0)
我遇到了同样的问题,正在寻找答案。我尝试使用string.trim()并将其放入输出流中并且工作正常。我猜测文件路径周围有一些尾随字符或位