GVKun编程网logo

Java新的File()表示FileNotFoundException但文件存在(java new file 文件不存在)

23

如果您想了解Java新的File的相关知识,那么本文是一篇不可错过的文章,我们将对表示FileNotFoundException但文件存在进行全面详尽的解释,并且为您提供关于.net–IO.FileN

如果您想了解Java新的File的相关知识,那么本文是一篇不可错过的文章,我们将对表示FileNotFoundException但文件存在进行全面详尽的解释,并且为您提供关于.net – IO.FileNotFoundException但文件应该存在、android – java.io.FileNotFoundException:/file/path.jpg open failed:ENOENT(没有这样的文件或目录)、Error: java.io.FileNotFoundException: Path is not a file: /g6/hadoop/20190326、File.Exists 文件不存在 Or FileNotFoundException的有价值的信息。

本文目录一览:

Java新的File()表示FileNotFoundException但文件存在(java new file 文件不存在)

Java新的File()表示FileNotFoundException但文件存在(java new file 文件不存在)

我有一个CS课的作业,它说要读取一个包含多个测试成绩的文件,并要求我对其求和并求平均值。虽然求和平均很容易,但是我在读取文件时遇到了问题。讲师说要使用这种语法

Scanner scores=new Scanner(new File("scores.dat"));

但是,这会引发FileNotFoundException,但是我一遍又一遍地检查了该文件是否存在于当前文件夹中,然后,我发现它必须对权限进行处理。我更改了所有人的读写权限,但是它仍然无法正常工作,并且仍然不断抛出错误。有谁知道为什么会这样?

编辑:它实际上是指向一个目录了,但是,我已经解决了这个问题。file.exists()返回true,但是,当我尝试将其放入扫描仪时,它将引发filenotfoundexception

这是我的全部代码

import java.util.Scanner;import java.io.*;public class readInt{        public static void main(String args[]){                File file=new File("lines.txt");                System.out.println(file.exists());                Scanner scan=new Scanner(file);        }}

答案1

小编典典

在许多情况下FileNotFoundException,运行时可能会引发a 。

命名文件不存在。原因可能有很多,其中包括:

路径名完全错误
路径名看起来正确,但实际上是错误的,因为它包含您没有注意到的非打印字符(或同形文字)
路径名是相对的,相对于正在运行的应用程序的实际当前目录,它不能正确解析。通常发生这种情况是因为应用程序的当前目录不是您期望或假定的目录。
该文件的路径已损坏;例如,路径的目录名称不正确,路径上的符号链接已损坏或路径组件之一存在权限问题。
命名文件实际上是一个目录。

由于某种原因,无法打开指定文件进行读取。
好消息是,问题将不可避免地是上述之一。只是确定哪一个问题。您可以尝试以下操作:

  • 调用file.exists()将告诉您是否存在具有给定名称/路径名的文件系统对象。
  • 调用file.isDirectory()将测试它是否是目录。
  • 调用file.canRead()将测试该文件是否可读。
  • 此行将告诉您当前目录是什么:
System.out.println(new File(".").getAbsolutePath());
  • 此行将以某种方式打印出路径名,从而更容易发现意外的前导或训练性空白:
System.out.println("The path is ''" + path + "''");

在输出中查找意外的空格,换行符等。

事实证明您的示例代码有一个编译错误。

我运行您的代码时并没有处理Netbeans的投诉,只是得到以下异常消息:

线程“主”中的异常java.lang.RuntimeException:无法编译的源代码-未报告的异常java.io.FileNotFoundException; 必须被抓住或宣布被抛出

如果将代码更改为以下代码,它将解决该问题。

public static void main(String[] args) throws FileNotFoundException {        File file = new File("scores.dat");    System.out.println(file.exists());    Scanner scan = new Scanner(file);}

说明:Scanner(File)构造函数被声明为引发FileNotFoundException异常。(碰巧扫描程序无法打开文件。)现在FileNotFoundException是一个已检查的异常。这意味着可能引发异常的方法必须捕获异常或在throws子句中声明它。上面的修复采用了后一种方法。

.net – IO.FileNotFoundException但文件应该存在

.net – IO.FileNotFoundException但文件应该存在

虽然我确信该文件存在,但我得到了令人惊讶的FileNotFoundException.

我只是想添加Logfiles(IO.FileInfo)作为电子邮件的附件,因此我试图检查每个文件的长度,以检测它们是否必须添加/压缩.
如果这些文件已存在,这可以正常工作.
但是,如果我在这次运行中创建它们,当我尝试检查长度时,我会遇到异常.奇怪的是,我可以写入这些“不存在的”文件(实际上FileInfo.Exists返回false),之前没有问题.

这是一些代码……

在名为Log的类的构造函数中创建其中一个文件:

Me.LogFile = New IO.FileInfo(infoLogPath)
If Not LogFile.Exists() Then
   'tried to use `Using` on the Stream but that doesn't change anything'
   Using stream = Me.LogFile.Create()
       'close and dispose implicitely
   End Using
End If

我可以毫无问题地写入文件:

Me.Log.WriteInfo("BlahBlahBlah...",False)

我在LogFile.Length上获得异常后的一行:

If Me.Log.LogFile.Length <> 0 Then
    files.Add(Me.Log.LogFile)
End If

Me.Log是一个名为Log的自定义日志记录类对象,它保存对FileInfo对象的引用.

这是类Log中的WriteInfo,LogFile是IO.FileInfo-onject:

Public Sub WriteInfo(ByVal message As String,ByVal finishLog As Boolean)
    Try
        Using w As IO.StreamWriter = Me.LogFile.AppendText
            If Me.WithTimestamp Then
                w.WriteLine(Date.Now.ToString(Globalization.CultureInfo.InvariantCulture) & ": " & message)
            Else
                w.WriteLine(message)
            End If
            If finishLog Then w.WriteLine("__________________________")
            w.Flush()
            w.Close()
        End Using
    Catch writeLogException As Exception
        Try
            WriteError(writeLogException,True)
        Catch innerEx As Exception
            'ignore
        End Try
    End Try
End Sub

实际上@ShellShocks solution与Refresh很简单.从来没有听说过这个函数,奇怪的是,当我不刷新文件时,我得到了一个FileNotFoundException.

Me.Log.LogFile.Refresh()
尝试在FileInfo.Exists或FileInfo.Length之前调用 FileInfo.Refresh – 这些属性可能会被缓存,因此Refresh将获取最新值.

android – java.io.FileNotFoundException:/file/path.jpg open failed:ENOENT(没有这样的文件或目录)

android – java.io.FileNotFoundException:/file/path.jpg open failed:ENOENT(没有这样的文件或目录)

我试图将图像保存到 parse.com.我需要将其转换为字节数组.我决定尝试这样做的方法是使用 apache commons-io.它工作不正常.这是我的代码片段;

private void saveImage() throws IOException {
    // Todo Auto-generated method stub

    InputStream header = new FileInputStream("/ClashMMA/res/drawable-hdpi/beatdown.jpg");

    ParseFile file = new ParseFile(toByteArray(header));
    try{
        file.save();
    } catch (ParseException e) {
        e.printstacktrace();
    }

    ParSEObject displayImage = new ParSEObject("displayImage");
    displayImage.put("header",file);
    try{
        displayImage.save();
    } catch (ParseException e1){
        e1.printstacktrace();
    }
}


private byte[] toByteArray(InputStream header) throws IOException {
    // Todo Auto-generated method stub
     ByteArrayOutputStream buffer = new ByteArrayOutputStream();
        int l;
        byte[] data = new byte[1024];
        while ((l = header.read(data,data.length)) != -1) {
          buffer.write(data,l);
        }
        buffer.flush();
        return buffer.toByteArray();

}

而我的错误是这样的;

java.io.FileNotFoundException:/ClashMMA/res/drawable-hdpi/beatdown.jpg:open Failed:ENOENT(没有这样的文件或目录)

但我确信文件在那里,因为我去了我的文件目录(在eclipse中),右键单击,然后单击copy Qualified Name.这基本上复制了文件路径.我已经尝试了一些其他路径,例如关闭我的计算机,以及我的src文件夹.有人可以告诉我我做错了什么吗?为什么它不会读取文件,实际上它在那里?详细解释请.

解决方法

Eclipse项目中的文件不在(真实的或模拟的)Android文件系统中,这就是Android FileInputStream所在的位置. (有充分的理由!Eclipse的主机文件系统不会出现在真正的Android设备上.)

你基本上有两个选择:

>将它们放入APK存档中,以便您可以使用getSystemResourceAsstream加载它们:请参阅How to load image for Android ImageView from classpath?>将文件复制到Android文件系统中,以便FileInputStream可以找到它们.

Error: java.io.FileNotFoundException: Path is not a file: /g6/hadoop/20190326

Error: java.io.FileNotFoundException: Path is not a file: /g6/hadoop/20190326

跑 mapreduce 时,有报错 Error: java.io.FileNotFoundException: Path is not a file: /g6/hadoop/20190326,以下是报错内容

19/03/26 21:28:08 INFO mapreduce.Job: map 0% reduce 0%
19/03/26 21:28:12 INFO mapreduce.Job: Task Id : attempt_1552051424310_0114_m_000000_0, Status : FAILED
Error: java.io.FileNotFoundException: Path is not a file: /g6/hadoop/20190326
at org.apache.hadoop.hdfs.server.namenode.INodeFile.valueOf(INodeFile.java:70)
at org.apache.hadoop.hdfs.server.namenode.INodeFile.valueOf(INodeFile.java:56)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocationsUpdateTimes(FSNamesystem.java:1934)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocationsInt(FSNamesystem.java:1875)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations(FSNamesystem.java:1855)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations(FSNamesystem.java:1827)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getBlockLocations(NameNodeRpcServer.java:566)
at org.apache.hadoop.hdfs.server.namenode.AuthorizationProviderProxyClientProtocol.getBlockLocations(AuthorizationProviderPro

 

执行的命令是

process_data=20190326 

hadoop jar hadoop_train-1.0.jar com.g609.hadoop.etl.driver.LogETLDriver   /g6/hadoop/$process_data/ /g6/hadoop/access/output/$process_data

经过分析最终发现因为在输入路径 /g6/hadoop/$process_data/  最后又加了一个 /  把这个斜线去掉在执行就可以了

File.Exists 文件不存在 Or FileNotFoundException

File.Exists 文件不存在 Or FileNotFoundException

 

标题警告,本文仅限走投无路,最终可能的一个问题导致。

最开始出现在找不到文件,测试发现:

 看起来毫无毛病

 

而后各种测试:

 注意看,第一行跟第三行一模一样

 

发现【@"‪‪‪】这两个字符有毒,如果这样替换第一行就会返回true:

 

 

调试看也毫无毛病:

 

然后就想到可能粘贴了看不到的字符:Unicode编码转换

多了&#8234;&#8234;&#8234;

 

果然,多了“&#8234;&#8234;&#8234;”,不过也不记得哪里粘贴来的了。我们查一下8234是什么: 

左往右嵌入?啥..

幽灵事件就这样解决了,”&#8234;“虽然看不到,但也导致不能正确识别目录,这种问题不大可能会遇到,类似字符串都可能剪贴板粘贴到,记录下。

 

 

今天关于Java新的File表示FileNotFoundException但文件存在的分享就到这里,希望大家有所收获,若想了解更多关于.net – IO.FileNotFoundException但文件应该存在、android – java.io.FileNotFoundException:/file/path.jpg open failed:ENOENT(没有这样的文件或目录)、Error: java.io.FileNotFoundException: Path is not a file: /g6/hadoop/20190326、File.Exists 文件不存在 Or FileNotFoundException等相关知识,可以在本站进行查询。

本文标签: