2012-01-09 132 views
0

我正在使用此代码使用filereader对象在java中读取文件。然而,应用程序会抛出异常,说明它无法找到file.Can谁能帮助这个新手家伙刚进入Java编程简单java代码中的FileNotfound异常

import java.util.*; 
import java.io.*; 
import java.util.Scanner; 
import java.io.FileReader; 
import java.io.PrintWriter; 


public class CFileReader { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) throws FileNotFoundException 
    { 
     String objLine; 
     String strInputFileName; 
     FileReader objReader = null; 
     Scanner objScanner; 
     File objFile; 

     if(args.length > 0) 
     { 
      for(int i = 0;i < args.length ;i++) 
      { 
       //Gets the arguments into the strInputFileName variable 
       strInputFileName = args[i]; 

       System.out.println("Filename entered was : " + strInputFileName); 

       //Create a file object which points to the filename i.e strInputFileName 
       objFile = new File(strInputFileName); 

       //Create a FileReader object with the File object i.e objFile as the input parameter 
       objReader = new FileReader(objFile); 

       System.out.println("Filereader object is : " + objReader.toString()); 

       //Create a scanner object with FileReader as input parameter 
       objScanner = new Scanner(objReader); 

       System.out.println(args); 


       //Scans the file if it has next line 
       while(objScanner.hasNextLine()) 
       { 
        //Store the contents i.e. first line in the objLine Variable 
        objLine = objScanner.nextLine(); 


        //prints the contents 
        if(objLine.indexOf(i) > 0) 
         { 
          System.out.println(objLine); 
         } 
       } 


      } 

     } 
     else 
     { 
      //Warn the user to enter the command line arguments if he has not entered 
      System.out.println("Please Enter Command line args"); 
     } 

    } 

} 

编译我使用

javac CFileReader.java 

和运行程序

java CFileReader "C:\\Hello.txt" 

其中hello.txt的是一些内容的简单文本文件

非常感谢您提前致谢

+2

你可以打印stacktrace(错误信息?) – OscarRyz 2012-01-09 18:03:19

+0

你的(root)'C:'目录中是否存在'Hello.txt'?你真的需要双倍\\在那里? (不是100%肯定后者)。 – 2012-01-09 18:05:20

+0

有一件事要检查:尝试打印出'objFile.getAbsolutePath()'(在创建文件后),看看它是否是你期望的。我不确定这些命令将如何解析。 – 2012-01-09 18:06:01

回答

2

除了@Adel指出的args [0]错误,您也不必在命令行中跳过“\”...“C:\ Hello.txt“就足够了。

0

我一般把下面几行我的File对象及其使用之间:

if (!objFile.isFile() || !objFile.exists()) { 
    System.out.println("Could not find file: " + objFile.getPath().toString(); 
} 

这往往会显示在文件名中的字符串格式的问题。

+0

我使用了这段代码,但应用程序在这个阶段没有抛出任何异常,但只有当我尝试使用filereader对象读取文件时 – 2012-01-09 18:28:19

+0

不显示任何内容,那么读取文件时会出现实际问题 - 文件有效但无法读取。如果我不得不猜测,我会说权限?因为据我所知,其余的设置是正确的。我会检查以确保您尝试阅读的文件具有开放权限。我从来没有使用扫描仪对象,但它可能有限制,或者我可能不知道它的用法。 – vextorspace 2012-01-10 12:49:19

+0

任何有关Windows 7操作系统特殊处理的想法? – 2012-01-23 05:51:53

0

该代码适用于我的MacOS系统,问题在于您在Windows中编写文件路径的方式。在我的情况下:

java CFileReader /home/jenaiz/test.txt 
1

你不需要\\。 Java不会解析输入字符串中的转义序列,并且单个反斜杠是Windows shell中的路径分隔符。

0

我在Windows上自己编译和测试了这个代码,它工作正常。您所在的文件不存在,或者您在命令行中键入文件名称时出错。

+0

奇怪我还是不能运行这个x( – 2012-01-09 18:16:31

+0

你是否100%确定你正在尝试使用的文件存在? – Peter 2012-01-09 18:18:32

0

检查您的输入文件是否存在。当我在机器上运行你的代码时,我没有权限在C:的根目录下创建一个文件。你是如何创建测试文件的?

当我将文件移动到另一个驱动器时,例如“t:\ hello.txt”它第一次运作。

+0

我试图使用“D”驱动器上的测试文件..但仍然编无法搜索n找到文件:( – 2012-01-09 18:22:50

+0

尝试将文件移动到您的源所在的同一目录。这样您就知道您拥有读/写权限并可以排除此问题。 – 2012-01-09 18:49:03