让我首先确定以下事实:我是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());
}
}
}
该程序似乎无法正常工作。我使用NetBeans来运行代码,当我运行代码时,它不会在文本文件Names.txt中显示数据。这是为什么?然而,该程序完全构建没有错误。
我已经尝试过浏览器类javadocs,但它没有帮助我。
请向我解释,以便我可以从错误中吸取教训。
谢谢, 约翰
答案 0 :(得分:0)
我在我的Mac上尝试了你的代码,它确实有效。所以我认为你可能会输入一个错误的Names1.txt文件路径。
在Java中,当您只使用“what_ever_file_name.txt”作为文件路径时,Java将只搜索源代码文件夹中的文件。如果找不到任何内容,将抛出“FILE_NOT_FOUND_EXCEPTION”。
答案 1 :(得分:0)
我同意user2170674。我也尝试使用Eclipse在Windows机器上运行代码,一切顺利。也许你把文件放错了路。两个选项:
或更通用的解决方案,使用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...
}
答案 2 :(得分:0)
您的代码看起来不错
使用一些消息进行调试
最后,添加System.out.println()
或System.out.flush()
将异常块位置移动到文件使用后(最小化try块大小)并在finally块中移动close()
确保您查看Netbeans输出窗口(窗口 - &gt;输出 - &gt;输出)
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.");
}
}
答案 3 :(得分:-1)
这是一个有效的例子。也许尝试使用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();
}
}
}
}
来自http://docs.oracle.com/javase/tutorial/essential/io/scanning.html