输出.txt文件中的每个字符串

时间:2011-03-31 02:37:25

标签: java

制作程序从文件夹中检索.txt文件。每个.txt文件包含1或2行单词。我从文件夹中获取.txt文件的每个文件名的输出:

Donatello
Galileo
Leonardo
Michael
Rafael

离。我到目前为止的代码:

import java.io.*;
import java.util.*;

public class Liarliar {
    public static void main(String args[])throws IOException{

        File listofnames = new File("C:\\List of names");
        File[] names = listofnames.listFiles();

        for(File person : names){
            int index = person.getName().lastIndexOf(".");
            if(index>0&& index <= person.getName().length()-2){
                System.out.println(person.getName().substring(0, index));
            }
        }
    }
}

这都是文件名,但这不是我想要的输出。我想要的输出是:

Donatello 2
Hi
Hello
Galileo 2
Fine
Thanks
Leonardo 1
Hi
Michael 1
Hello
Rafael 1
Hi

说明:上面给出的示例输出,例如: Donatello 2,空格后的数字2和名称Donatello,2对应于文件名Donatello.txt中的单词数。 2因为有2行单词。我希望你明白我的观点。

非常感谢任何帮助。谢谢......

2 个答案:

答案 0 :(得分:0)

我建议你将代码分解为方法。例如,编写一个以File为参数的方法,并返回该文件中的行数:

public int countLines(File f) {
    ...
}

然后,采用File并将其内容写入System.out的方法:

public void writeContents(File f) {
    ...
}

采用File并返回其名称的方法:

public String getName(File f) {
    ...
}

现在,您可以使用这三个函数和一些粘合代码来编写程序:

public void processFiles(File[] files) {
    for (File file : files) {
        // Print info for this file using the three functions above
        ...
    }
}

这通常是一种很好的编程方式。如果问题很难,那么试着把它分成更小的块。

希望有所帮助。

答案 1 :(得分:0)

最后,我明白了你的观点。 Donatello(文件名)2(包含行号) 你好 你好 (以上两行是Donatello.txt中的内容,对吧?

解决方案:

如果文件大小最多为两行,您可以生成一个新类来满足您的要求:

class FileInfo {
String fileName;
int lineNum;
String[] content;
}

然后逐行读取文件以填充FileInfo的信息。最后,打印出您需要的所有信息。

希望这有帮助。