我目前正在学习入门CS课程的Java。我有Python的初学经验,我从eTextbook学习Python艰难的方式(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中添加参数(即脚本,文件名)?
答案 0 :(得分:1)
对于阅读文件,我建议您关注此网站:Read File With Java.
至于参数,我不确定你是否意味着进入程序本身(命令行参数)或者正在谈论更多的扫描输入。如果您在谈论命令行参数,我会遵循Oracle Docs.
祝你好运。答案 1 :(得分: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]等
的形式访问参数答案 2 :(得分:0)
Google Guava具有将整个文件读取为String的实用程序方法,也用于将文件读入行列表等。
例如,
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));
}
}