0

我有一个包含如下数据的文本文件:

a1 a2 b1 b2 c1 a1b2c1 //Line 1
a2 b2 c2 d1 e1 b2c1   //Line 2
b1 c3 d2 e1 e2 c3     //Line 3

如何在 Java 中读取此文件以及在何处以及如何存储数据?任何帮助,将不胜感激。谢谢。

4

3 回答 3

2

如果您想将其存储到列表中:

public static void main(String... s) throws Exception {
    FileReader fr = new FileReader("read.txt");
    BufferedReader br = new BufferedReader(fr);
    String line = "";
    List<String> list = new ArrayList<String>(0);
    while ((line = br.readLine()) != null) {
           // process the line.
        list.add(line);
    }
    br.close();
    fr.close();
}
于 2013-05-28T08:07:41.613 回答
0

2个问题仍然存在:

  1. 正如 Jon Skeet 先生所说,我们不知道您想用它做什么,这使得很难回答“如何存储”部分。
  2. 你想把它读成什么?您希望将整个数据读取为字符还是将数字读取为int

由于阅读所有字符很容易,我建议您使用BufferedReader. 它将让您轻松阅读段落的句子。

为此,您需要研究:
1.java.nio.Pathjava.nio.Paths(从 Java 7 开始)
2.java.nio.file.Files制作InputStream
3.因为构造函数InputStreamReader需要它。 4.本身:) BufferedReader
BufferedReader

这是一个简单的例子

package test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Vector;
import static java.nio.file.StandardOpenOption.*;

public class TestReader {
    public static void main(String[] args) throws IOException {
        Path fileLocation = Paths.get("E:\\setup.txt"); // location of the file
        Vector<String> sentences = new Vector<String>();  //I do not know how many sentences are there
        InputStreamReader insReader = null;
        BufferedReader reader = null;
        String readSentence;

            insReader = new InputStreamReader(Files.newInputStream(fileLocation,READ));
            reader = new BufferedReader(insReader);


            while((readSentence=reader.readLine())!=null){
                sentences.add(readSentence);
            }
        for(String a : sentences){
            System.out.println(a);
        }

    }
}
于 2013-05-28T08:04:47.070 回答
0

您可以轻松地将文本文件“读取”到内存中。问题是:为了什么?这里的关键概念是如何存储它以使数据有用,即它可以很容易地被您的程序处理。由于我们忽略了问题的目的,我假设您只需要每个粒子作为字符串。为此,像这样的简单程序将执行以下操作:

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

public class ReaderApp {
    public static void main(String[] args)
    {
        if ( args.length == 1 ) {
            String[] data = readData( args[ 0 ] );

            if ( data.length > 0 ) {
                for(int i = 0; i < data.length; ++i) {
                    System.out.println( data[ i ] );
                }
            } else {
                System.err.println( "ERROR: problem reading file" );
            }
        } else {
            System.err.println( "ERROR: add the name of the text file" );
        }
    }

    public static String[] readData(String fileName)
    {
        ArrayList<String> toret = new ArrayList<>();

        try (BufferedReader f = new BufferedReader( new FileReader( fileName ) ) )
        {
            String line = f.readLine();
            while( line != null ) {
                String[] parts = line.split( " " );

                toret.addAll( Arrays.asList( parts ) );

                line = f.readLine();
            }
        }
        catch(IOException exc)
        {
            toret.clear();
        }

        return toret.toArray( new String[ toret.size() ] );
    }

}

希望这可以帮助。

于 2013-05-28T08:16:40.247 回答