Java 从文件中读取文本,并将每行中的每个单词存储到单独的变量中

Java 从文件中读取文本,并将每行中的每个单词存储到单独的变量中,java,file-io,Java,File Io,我有一个包含以下内容的.txt文件: 1 1111 47 2 2222 92 3 3333 81 我想逐行阅读,并将每个单词存储到不同的变量中 例如:当我阅读第一行“111147”时,我想将第一个单词“1”存储到var_1,“1111”存储到var_2,“47”存储到var_3。然后,当它转到下一行时,这些值应分别存储到相同的var_1、var_2和var_3变量中 我的初步做法如下: import java.io.*; class ReadFromFile { public stat

我有一个包含以下内容的.txt文件:

1 1111 47
2 2222 92
3 3333 81
我想逐行阅读,并将每个单词存储到不同的变量中

例如:当我阅读第一行“111147”时,我想将第一个单词“1”存储到
var_1
,“1111”存储到
var_2
,“47”存储到
var_3
。然后,当它转到下一行时,这些值应分别存储到相同的
var_1
var_2
var_3
变量中

我的初步做法如下:

import java.io.*;
class ReadFromFile
{
    public static void main(String[] args) throws IOException
    {
        int i;
        FileInputStream fin;
        try
        {
            fin = new FileInputStream(args[0]);
        }
        catch(FileNotFoundException fex)
        {
            System.out.println("File not found");
            return;
        }
        do 
        {
            i = fin.read();
            if(i != -1) 
                System.out.print((char) i);
        } while(i != -1);

        fin.close();
    }
}
请给我你的建议。多谢各位

        try {
        BufferedReader fr = new BufferedReader(new InputStreamReader(new FileInputStream(file), "ASCII"));
        while(true)
        {
            String line = fr.readLine();
            if(line==null)
                break;
            String[] words = line.split(" ");//those are your words
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
希望这有帮助

查看阅读行。之后,您必须使用类似于或字符串拆分的方法分解该行。

import java.io.*;
public static void main(String[] args) throws IOException {
    File file = new File("/path/to/InputFile");
    BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
    String line = null;
    while( (line = br.readLine())!= null ){
        // \\s+ means any number of whitespaces between tokens
        String [] tokens = line.split("\\s+");
        String var_1 = tokens[0];
        String var_2 = tokens[1];
        String var_3 = tokens[2];
    }
}
导入java.util.Scanner; 课例{ 公共静态void main(字符串[]args)引发异常{ 文件f=新文件(“main.txt”); StringBuffer txt=新的StringBuffer(); FileOutputStream fos=新的FileOutputStream(f); 对于(int i=0;i
String[]vars=i.split(“”);var_1=vars[0];var_2=vars[1];var_3=vars[2]当(!(line=br.readLine()).equals(“”)@SantoshVM检查另一行是否确实存在时,您在这里检查什么。line=br。如果没有其他行,readLine()将返回null。所以我正在重新检查它!=无效的如果它是真的,意味着这确实是一行,那么做的工作有没有任何方法可以不使用BufferedReader函数进行解析?@SantoshVM我想是的,但这将更加困难,您需要手动确定文件中新行的起始位置。
import java.io.*;
import java.util.Scanner;

class Example {
    public static void main(String[] args) throws Exception {

        File f = new File("main.txt");
        StringBuffer txt = new StringBuffer();
        FileOutputStream fos = new FileOutputStream(f);
        for (int i = 0; i < args.length; i++) {
            txt.append(args[i] + " ");
        }
        fos.write(txt.toString().getBytes());
        fos.close();
        FileInputStream fis = new FileInputStream("main.txt");
        InputStreamReader input = new InputStreamReader(fis);
        BufferedReader br = new BufferedReader(input);
        String data;
        String result = new String();
        StringBuffer txt1 = new StringBuffer();
        StringBuffer txt2 = new StringBuffer();
        File f1 = new File("even.txt");
        FileOutputStream fos1 = new FileOutputStream(f1);
        File f2 = new File("odd.txt");
        FileOutputStream fos2 = new FileOutputStream(f2);
        while ((data = br.readLine()) != null) {
            result = result.concat(data);
            String[] words = data.split(" ");
            for (int j = 0; j < words.length; j++) {
                if (j % 2 == 0) {
                    System.out.println(words[j]);
                    txt1.append(words[j] + " ");
                } else {
                    System.out.println(words[j]);
                    txt2.append(words[j] + " ");
                }
            }
        }
        fos1.write(txt1.toString().getBytes());
        fos1.close();
        fos2.write(txt2.toString().getBytes());
        fos2.close();
        br.close();

    }
}