用Java和Python读取文件

时间:2012-02-17 18:44:27

标签: java python

我目前正在学习入门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中添加参数(即脚本,文件名)?

3 个答案:

答案 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));
    }
}