Java 从文件中读取文本,并将每行中的每个单词存储到单独的变量中
我有一个包含以下内容的.txt文件: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
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();
}
}