在Java与Python中读取文件
我现在正在学习Java,这是一个入门计算机科学的课程。我之前有一点Python的基础,是通过电子教材《Learn Python the Hard Way》学的,链接在这里:http://learnpythonthehardway.org/book/。
我正在通过把书里的Python代码转换成Java代码来学习Java。
不过我在Java中打开和读取文件时遇到了困难。我想把这段Python代码(书中的第15个练习)转换成Java:
from sys import argv
script, filename = argv
txt = open(filename)
print "Here's your file %r:" % filename
print txt.read()
print "Type the filename again:"
file_again = raw_input("> ")
txt_again = open(file_again)
print txt_again.read()
这是我在Java中打开文件的代码:
System.out.println("Type the filename again: ");
Scanner in = new Scanner(System.in);
String file_name = in.nextLine();
try
{
Scanner txt_again = new Scanner(new File(file_again));
}
catch ( IOException e)
{
System.out.println("Sorry but I was unable to open your file");
e.printStackTrace();
System.exit(0);
}
我该如何输出打开的文件(一个文本文件)呢?另外,如何在Java中添加参数(比如脚本名和文件名)呢?
3 个回答
0
Google Guava 是一个工具库,它提供了一些方便的方法,可以把整个文件的内容读入一个字符串中,也可以把文件的内容按行读入一个列表等等。
比如说,
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import com.google.common.base.Charsets;
import com.google.common.io.Files;
class Scratch {
public static void main(String[] args) throws IOException {
final String filename = args[0];
final File txt = new File(filename);
System.out.println("Here's your file: " + filename);
System.out.println(Files.toString(txt, Charsets.UTF_8));
System.out.print("Type the filename again: ");
final String fileAgain = new Scanner(System.in).nextLine();
final File txt_again = new File(fileAgain);
System.out.println(Files.toString(txt_again, Charsets.UTF_8));
}
}
1
如果你坚持要使用扫描器,这里有一段代码
// Read each line in the file
while(txt_again.hasNext()) {
// Read each line and display its value
System.out.println("First line: " + txt_again.nextLine());
// String whole_txt = whole_txt + txt_again.nextLine(); if you want all the contents in one string.
}
或者你可以把它赋值给一个字符串叫做 txt_name,然后把它打印出来。
http://www.functionx.com/java/Lesson23.htm
要添加参数的话,可以在你的主函数中加一个 String[] args
作为参数之一。
public static void main(String[] args)
然后你可以通过 args[0]、args[1] 等来访问这些参数。
1
如果你想读取文件,我建议你可以看看这个网站:用Java读取文件。
关于参数,我不太确定你是指程序内部的参数(命令行参数),还是说你想用扫描器获取更多输入。如果你是在说命令行参数,我建议你查看一下Oracle的文档。
祝你好运。