Bufferedreader和InputStreamReader
问题描述:
我无法让我的java程序读取任何文本文件。Bufferedreader和InputStreamReader
public static void main(String[] args) throws java.io.IOException {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
try {
long base = Long.parseLong(args[0]);
String input = br.readLine(); //read first line till the end of file
long list = Long.parseLong(input);
convertBase(base, list);
}
finally {
br.close();
}
}
程序工作时,我手动键入值进入命令行,但是当我尝试使用一个文本文件,它会抛出异常:
Exception in thread "main" java.lang.NumberFormatException: For input string: "baseconverion.txt"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:589)
at java.lang.Long.parseLong(Long.java:631)
at FromDecimal.main(FromDecimal.java:46)
不知道我在做什么错误/丢失。
答
当我尝试使用文本文件
你的意思是“当我输入文件名,而不是数量。”你不是'尝试'使用文本文件'。你所做的只是在控制台输入文件名。这里没有任何东西可以打开或读取任何文本文件。 Java并不神奇:它不会神奇地意识到这是一个文件名,并为您魔法般地打开它。
您需要阅读Java教程和Javadoc中的文件I/O。
如果您的目标是将小数转换为另一个基数,您也不应该使用Long.parseLong()
。您需要将原始行传递给您的转换方法。
您应该在尝试处理之前打印'input' - 您可能会对其内容感到惊讶。 – alfasin
您试图将文件名解析为'long'。解决方案:不要。 NB'readLine()'不'直到文件结尾读取第一行'。你为什么试图首先将文本文件解析为'longs'? – EJP
我需要分析多头,因为我有另一种方法,我将十进制数转换为基地 –