[英]FileInputStream can not find file
文件從規范路徑返回了錯誤的文件列表,具有新的實例化。
發生了FileNotFoundException java.io.FileNotFoundException
Java類部分
File file = new File("C:\\Locations.txt");
FileInputStream fis = new FileInputStream(file);
我也嘗試使用FileReader
BufferedReader br = new BufferedReader(new FileReader(new File("C:\\Locations.txt")));
結果還是一樣。 名稱在那里,這不是問題,控制台請求找到了我正在解析的內容。 有任何反饋嗎?
這是一個可以幫助您的演示:
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
File file = new File("C:\\test\\locations.txt");
if (!file.exists()) {
System.out.println("does not exist.");
return;
}
if(file.isFile() && file.canRead()) {
System.out.println(file.getName()+ " can be read from.");
}
if (file.isDirectory()) {
System.out.println(file.getPath()+" is a directory containing...");
String[] files = file.list();
for (String file1 : files) {
System.out.println(file1);
}
}
}
}
試一試以使東西干凈。 對於控制台測試,如果您確定將文件作為參數提供,則可以使用以下方法:
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
File file = new File(args[0]);
if (!file.exists()) {
System.out.println("File does not exist.");
return;
}
if(file.isFile() && file.canRead()) {
System.out.println(file.getName()+ " can be read from.");
}
if (file.isDirectory()) {
System.out.println(file.getPath()+" is a directory containing...");
String[] files = file.list();
for (String file1 : files) {
System.out.println(file1);
}
}
}
}
您會發現問題實際上是路徑名,一種或另一種。
當FileInputStream
嘗試在Windows上打開文件時,它通過以下試探法檢查路徑是否為絕對路徑:
'\\\\'
-UNC絕對路徑 ':'
,第三個字符是'\\\\'
-具有驅動器名稱的絕對路徑。 如果路徑是絕對路徑(並且不是太長),則將其傳遞到Windows操作系統以打開文件。 這包括(確定性)檢查以查看文件是否實際存在。
(以上描述基於我對Java 8的OpenJDK源代碼樹中Windows的FileInputStream.open0
的本機代碼實現的C語言源代碼的閱讀。)
您已經提供了一條絕對路徑(根據啟發式方法),並且路徑並不長。 因此,問題必須出在Windows本身認為該文件不存在。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.