首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >意外FileNotFoundException

意外FileNotFoundException
EN

Stack Overflow用户
提问于 2014-01-27 20:39:23
回答 2查看 109关注 0票数 0

我已经学习Java一个月了,目前正在学习Java的I/O,但我遇到了一些问题。下面是一个简单的玩具代码来练习Inputstream。

代码语言:javascript
复制
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");
   }
}

上面的代码编译好。此代码的目的是简单地计算参数中的字节数。但是,当我使用参数运行编译后的代码时,例如:

代码语言:javascript
复制
java IOTest firstTrial 

系统提供以下异常消息:

代码语言:javascript
复制
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>

请帮助指出异常是如何抛出的?

还有一个额外的问题:我正在使用Eclipse编程。Eclipse中的输入结束字符是什么?谢谢

EN

回答 2

Stack Overflow用户

发布于 2014-01-27 20:44:16

您不是在读取文件:

代码语言:javascript
复制
java.io.FileNotFoundException: firstTrial <The system 
cannot find the file specified>

将一些完整的文件路径作为参数,您的程序就会限制字节。

票数 0
EN

Stack Overflow用户

发布于 2014-01-27 21:43:42

似乎您希望将参数字符串本身作为一个InputStream,来读取,但是FileInputStream的工作方式是,传递给它的String不是要读取的数据,而是要打开和读取的文件的名称。

但是,您可以将字符串本身读取为数据。如果您想在Java中使用StringReader, API,或者如果您想将原始字节作为InputStream读取,您也可以使用Reader来实现这一点。(但您需要指定字符编码。在本例中,我将其指定为“UTF-8”)。

代码语言:javascript
复制
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");
    }
}

注意,我从字符串中获取字节,然后使用ByteArrayInputStream而不是FileInputStream来读取它们。我做了另一个改变,就是将大括号放在while循环体周围。我更喜欢在一行上有循环,或者更好的是,将大括号放在身体周围,以使循环的范围更加清晰(并可能避免错误)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21391193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档