在Java与Python中读取文件

0 投票
3 回答
2893 浏览
提问于 2025-04-17 13:11

我现在正在学习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的文档。

祝你好运。

撰写回答