使用char数据读取文本文件

时间:2013-05-28 07:54:14

标签: java

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

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中读取此文件以及在何处以及如何存储数据?任何帮助,将不胜感激。感谢。

3 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:0)

仍有2个问题:

  1. 正如Jon Skeet先生所说,我们不知道你要用它做什么,这使得很难回答“如何存储”部分。
  2. 您希望将其读作什么?您是希望将整个数据读取为字符还是希望将数字读取为int
  3. 由于阅读所有字符很简单,我建议您使用BufferedReader。它将允许您轻松阅读段落的句子。

    要做到这一点,你需要研究:
    1. java.nio.Pathjava.nio.Paths(自Java 7起)
    2. java.nio.file.Files制作InputStream
    3. InputStreamReader因为BufferedReader构造函数需要它 4. 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);
            }
    
        }
    }
    

答案 2 :(得分: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() ] );
    }

}

希望这有帮助。