在java中读取文本文件

时间:2010-01-12 13:56:29

标签: java file-io

如何在Java中读取.txt文件,并在每行包含整数,字符串和双精度时将每行放在数组中?每一行都有不同数量的单词/数字。

我是Java中的一个完整的菜鸟,很抱歉,如果这个问题有点愚蠢。

由于

8 个答案:

答案 0 :(得分:11)

尝试没有人知道的Scanner课程,但几乎可以用文字做任何事情。

要获取文件的阅读器,请使用

File file = new File ("...path...");
String encoding = "...."; // Encoding of your file
Reader reader = new BufferedReader (new InputStreamReader (
    new FileInputStream (file), encoding));

... use reader ...

reader.close ();

你应该真正指定编码,否则当你遇到变音符号,Unicode等时会得到奇怪的结果。

答案 1 :(得分:6)

最简单的选择是简单地使用Apache Commons IO JAR并导入org.apache.commons.io.FileUtils类。使用这个类有很多种可能性,但最明显的可能如下;

List<String> lines = FileUtils.readLines(new File("untitled.txt"));

就这么简单。

  

“不要重新发明轮子。”

答案 2 :(得分:2)

你的问题不是很清楚,所以我只回答“阅读”部分:

List<String> lines = new ArrayList<String>();
BufferedReader br = new BufferedReader(new FileReader("fileName"));
String line = br.readLine();
while (line != null)
{
    lines.add(line);
    line = br.readLine();
}

答案 3 :(得分:1)

常用:

    String line = null;
    File file = new File( "readme.txt" );

    FileReader fr = null;
    try
    {
        fr = new FileReader( file );
    } 
    catch (FileNotFoundException e) 
    {  
        System.out.println( "File doesn't exists" );
        e.printStackTrace();
    }
    BufferedReader br = new BufferedReader( fr );

    try
    {
        while( (line = br.readLine()) != null )
    {
        System.out.println( line );
    }

答案 4 :(得分:0)

@ user248921首先,您可以将任何内容存储在字符串数组中,这样您就可以创建字符串数组并在数组中存储一行,并在需要时在代码中使用值。您可以使用以下代码在数组中存储异构(包含string,int,boolean等)行。

public class user {
 public static void main(String x[]) throws IOException{
  BufferedReader b=new BufferedReader(new FileReader("<path to file>"));
  String[] user=new String[500];
  String line="";
  while ((line = b.readLine()) != null) {
   user[i]=line; 
   System.out.println(user[1]);
   i++;  
   }

 }
}

答案 5 :(得分:0)

这是使用Streams和Collector的好方法。

List<String> myList;
try(BufferedReader reader = new BufferedReader(new FileReader("yourpath"))){
    myList = reader.lines() // This will return a Stream<String>
                 .collect(Collectors.toList());
}catch(Exception e){
    e.printStackTrace();
}

使用Streams时,您还有多种方法可以过滤,操纵或减少输入。

答案 6 :(得分:0)

Java中读取文件的最佳方法是打开文件,逐行读取并处理并关闭条带

// Open the file
FileInputStream fstream = new FileInputStream("textfile.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));

String strLine;

//Read File Line By Line
while ((strLine = br.readLine()) != null)   {
  // Print the content on the console - do what you want to do
  System.out.println (strLine);
}

//Close the input stream
fstream.close();

要了解有关如何使用Java读取文件的更多信息,check out the article

答案 7 :(得分:0)

对于 Java 11,您可以使用下一个简短的方法:

  Path path = Path.of("file.txt");
  try (var reader = Files.newBufferedReader(path)) {
      String line;
      while ((line = reader.readLine()) != null) {
          System.out.println(line);
      }
  }

或者:

var path = Path.of("file.txt");
List<String> lines = Files.readAllLines(path);
lines.forEach(System.out::println);

或者:

Files.lines(Path.of("file.txt")).forEach(System.out::println);