Java扫描器从文件中读取

Java扫描器从文件中读取,java,arrays,netbeans,java.util.scanner,readfile,Java,Arrays,Netbeans,Java.util.scanner,Readfile,让我首先确定以下事实:我是java新手,所以请耐心等待 在我的编程课上,我们得到了一个在家里使用Scanner类进行的练习。该活动显示了要使用的以下编码: import java.io.*; import java.util.*; public class FileReadWrite { public static void main(String[] args) throws FileNotFoundException { String[] strArr =

让我首先确定以下事实:我是java新手,所以请耐心等待

在我的编程课上,我们得到了一个在家里使用Scanner类进行的练习。该活动显示了要使用的以下编码:

import java.io.*;
import java.util.*;

public class FileReadWrite {

     public static void main(String[] args) throws FileNotFoundException {
          String[] strArr = new String[100];

          int size = 0;

          try {
               Scanner scFile = new Scanner(new File("Names1.txt"));
               while (scFile.hasNext()) {
                    strArr[size] = scFile.next();
                    size++;
               }
               scFile.close();

               for (int i = 0; i < size; i++) {
                    System.out.print(strArr[i] + " ");
               }
          } catch (FileNotFoundException e) {
               System.err.println("FileNotFoundException: " + e.getMessage());
          }

     }
}
import java.io.*;
导入java.util.*;
公共类文件读写{
公共静态void main(字符串[]args)引发FileNotFoundException{
字符串[]strArr=新字符串[100];
int size=0;
试一试{
Scanner scFile=新扫描仪(新文件(“Names1.txt”);
while(scFile.hasNext()){
strArr[size]=scFile.next();
大小++;
}
scFile.close();
对于(int i=0;i
程序似乎工作不正常。我使用NetBeans来运行代码,当我运行代码时,它不会在文本文件Names.txt中显示数据。为什么呢?然而,该程序完全没有错误地构建

我尝试过使用扫描器类javadocs,但它对我没有帮助

请给我解释一下,以便我能从所犯的错误中吸取教训

谢谢,
约翰

这里有一个有效的例子。也许可以尝试使用BufferedReader

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

public class ScanXan {
public static void main(String[] args) throws IOException {

    Scanner s = null;

    try {
        s = new Scanner(new BufferedReader(new FileReader("xanadu.txt")));

        while (s.hasNext()) {
            System.out.println(s.next());
        }
    } finally {
        if (s != null) {
            s.close();
        }
    }
}
}

我在我的mac电脑上试用了你的代码,效果很好。所以我认为您可能输入了一个错误的Names1.txt文件路径


在Java中,当您仅使用“what_ever_file_name.txt”作为文件路径时,Java将只搜索源代码文件夹中的文件。如果未找到任何内容,将抛出“文件未找到异常”。

我同意用户2170674。我还使用Eclipse在Windows机器上尝试了您的代码,一切都很顺利。也许你把文件放错了路径。两种选择:

  • 您可以使用完整路径,例如(如果您使用的是Windows)“C:\Names1.txt”
  • 或者,更通用的解决方案,使用JFileChooser:

          // create your FileChooser
          final JFileChooser chooser = new JFileChooser();
          // open the FileChooser
          int returnValue = chooser.showOpenDialog(null);
    
          // if you select a file
          if (returnValue == JFileChooser.APPROVE_OPTION) {
              // get the file and do what you need
              File file = chooser.getSelectedFile();
    
          } else {
              // throw an exception or just a message in the log...
          }
    
您的代码看起来不错。
使用一些消息进行调试。
最后,添加一个
System.out.println()
System.out.flush()

将异常块位置移动到文件使用之后(最小化try块大小),并在finally块中移动close()。
确保查看Netbeans输出窗口(窗口->输出->输出)

公共类FileReadWrite{
公共静态void main(字符串[]args)引发FileNotFoundException{
System.out.println(“启动主方法…”);
字符串[]strArr=新字符串[100];
int size=0;
试一试{
Scanner scFile=新扫描仪(新文件(“Names1.txt”);
while(scFile.hasNext()){
strArr[size]=scFile.next();
大小++;
}
System.out.println(“#######完成扫描。找到%d个令牌。”,大小);
}catch(filenotfounde异常){
System.err.println(“FileNotFoundException:+e.getMessage());
}捕获(例外e){
System.err.println(“异常:+e.getMessage());
e、 printStackTrace();
}最后{
if(scFile!=null){
scFile.close();
System.out.println(“封闭式扫描仪”);
}
}
System.out.println(“打印代币…”);
对于(int i=0;i
是否有错误或?请详细说明“似乎不起作用”。@kbbucks new String()会有什么帮助?请尝试使用调试器(您可以通过NetBeans执行此操作)。在循环之前添加一个断点,并检查程序当时的状态。您将能够找出它的失败之处;如果文件包含超过100个字符,您可以使用ArrayList或为该数组分配更多内存?或者至少告诉我们如何工作不正确:)它肯定会找到文件,因为它不会抛出“FileNotFound异常”。我已经把文件放在src文件夹中,这样它就可以很容易地找到信息。我会让JFileChooser试试。不过,我不确定我是否可以在考试中使用它。我已经更改了路径,但它仍然没有给出文件中的内容。文本文件中的数据可能有误吗?它应该是什么样子?我愚蠢地创建了我自己的文件,因为他们没有给我们一个。嗨,琼,有一些其他方法可以调查这个问题:*你有没有尝试去屏蔽你的代码,看看发生了什么,一行一行?*控制台中正在打印什么?关于文件中的数据错误:我建议您使用JFileChooser,只是为了保证您得到的文件是正确的。文件的内容应该是什么样子?我想,只要文本,每行末尾都有返回字符。谢谢您费心编写这一切!似乎编码有错误。当我尝试运行它时,在NetBeans中会出现三个初始错误。1) 第15行:System.out.println。。。。。错误:找不到适合println(String,int)的方法。2) 第22行:scFile!=0..... 错误:找不到符号。3) 第23行:scFile.close()。。。。。错误:在对编码做了一些小的调整之后,找不到symbolSo,我让它运行了,但它仍然给我带来了上面提到的问题,它没有显示txt文件中的内容。它遍历所有内容,打印代码中的每一行,但是当它必须打印令牌时,它会生成一个新的空行,然后继续退出main;它是否打印了大量空令牌?:,,不,仍然只有一行空,请尝试以下操作:L1
Scanner scFile=null
L2
scFile=新的扫描仪(新的BufferedReader(新的文件读取器)(“名称
public class FileReadWrite {

 public static void main(String[] args) throws FileNotFoundException {
      System.out.println("##### Starting main method...");
      String[] strArr = new String[100];

      int size = 0;

      try {
           Scanner scFile = new Scanner(new File("Names1.txt"));
           while (scFile.hasNext()) {
                strArr[size] = scFile.next();
                size++;
           }
           System.out.println("##### Finished scan.  Found %d tokens.", size);
      } catch (FileNotFoundException e) {
           System.err.println("FileNotFoundException: " + e.getMessage());
      } catch (Exception e) {
           System.err.println("Exception: " + e.getMessage());
           e.printStackTrace();
      } finally {
           if (scFile != null) {
               scFile.close();
               System.out.println("##### Closed scanner.");
           }
      }
      System.out.println("##### Printing tokens...");

      for (int i = 0; i < size; i++) {
           System.out.print(strArr[i] + " ");
      }
      System.out.println("");
      System.out.println("##### Exiting main.");
 }
}