Java 意外的FileNotFoundException
我已经学习Java大约一个月了,目前正在学习Java的I/O,但我遇到了一些问题。下面是一个简单的玩具代码来练习InputstreamJava 意外的FileNotFoundException,java,eclipse,filenotfoundexception,Java,Eclipse,Filenotfoundexception,我已经学习Java大约一个月了,目前正在学习Java的I/O,但我遇到了一些问题。下面是一个简单的玩具代码来练习Inputstream import java.io.*; public class IOTest{ public static void main(String[] args) throws IOException{ InputStream in; in = new FileInputStream(args[0]); int total = 0; wh
import java.io.*;
public class IOTest{
public static void main(String[] args) throws IOException{
InputStream in;
in = new FileInputStream(args[0]);
int total = 0;
while (in.read() != -1)
total++;
System.out.println(total + " bytes");
}
}
上面的代码可以编译。这段代码的目的是简单地计算参数中的字节数。但是,当我使用参数运行编译后的代码时,例如:
java IOTest firstTrial
系统发出以下异常消息:
Exception in thread "main" java.io.FileNotFoundException: firstTrial <The system
cannot find the file specified>
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init><Unknown Source>
at java.io.FileInputStream.<init><Unknown Source>
at IOTest.main<IOTest.java:8>
线程“main”java.io.FileNotFoundException中的异常:firstTrial
在java.io.FileInputStream.open(本机方法)
位于java.io.FileInputStream。
位于java.io.FileInputStream。
在万豪酒店
请帮助指出异常是如何引发的
另外一个问题是我正在使用Eclipse进行java编程。Eclipse for Java中输入字符的结尾是什么?谢谢您没有在阅读文件:
java.io.FileNotFoundException: firstTrial <The system
cannot find the file specified>
java.io.FileNotFoundException:firstTrial
将一些完整的文件路径作为参数,您的程序将包含字节。似乎您希望将参数字符串本身作为
输入流来读取,
但是文件输入流
的工作方式是,您传递的字符串
不是要读取的数据,而是要打开和读取的文件名
但是,可以将字符串本身作为数据读取。如果您想在Java中使用Reader
API,或者如果您想以InputStream
的形式读取原始字节,那么您也可以使用StringReader来实现。(但您需要指定字符编码。在本例中,我将其指定为“UTF-8”。)
请注意,我从字符串中获取字节,然后使用ByteArrayInputStream
而不是FileInputStream
来读取它们。我做了另一个改变,那就是在while
循环体周围放上大括号。我更喜欢在一行上有循环,或者,更好的是,在主体周围放上大括号,以使循环的范围更清晰(并可能避免错误)。Ctrl+D用于EOF/end of INPUTPUT firstTrial文件存在的地方?对不起,可能我没有理解。我试图在代码运行期间读取参数,并计算参数中的字节数。在上面的示例中,firtTrial是我在运行IOTest代码期间输入的参数。
import java.io.*;
public class IOTest {
public static void main(String[] args) throws IOException {
byte[] bytes = args[0].getBytes("UTF-8");
InputStream in = new ByteArrayInputStream(bytes);
int total = 0;
while (in.read() != -1) {
total++;
}
System.out.println(total + " bytes");
}
}