在java中读取.txt文件
我有一个带有一些数字的.txt文件。看起来是这样的:在java中读取.txt文件,java,java-io,Java,Java Io,我有一个带有一些数字的.txt文件。看起来是这样的: 1 4364 658 4328 666 2 5109 659 5100 638 3 4936 659 4904 677 4 4936 659 4957 639 5 5518 660 5602 672 import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; imp
1 4364 658 4328 666
2 5109 659 5100 638
3 4936 659 4904 677
4 4936 659 4957 639
5 5518 660 5602 672
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class ReadNumbers {
public List<int[]> getNumbers(InputStream is) throws IOException {
List<int[]> result = new ArrayList<int[]>();
BufferedReader reader = null;
String line = null;
try {
reader = new BufferedReader(new InputStreamReader(is));
while ((line = reader.readLine()) != null) {
String[] s = line.split("\\s+");
int[] numbers = new int[s.length - 1];
for (int i = 0; i < numbers.length; i++) {
numbers[i] = Integer.parseInt(s[i + 1]);
}
result.add(numbers);
}
} finally {
if (reader != null) {
reader.close();
}
}
return result;
}
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
ReadNumbers reader = new ReadNumbers();
InputStream is = null;
try {
is = new FileInputStream("numbers.txt");
List<int[]> numbers = reader.getNumbers(is);
for (int[] n : numbers) {
int sum = 0;
for (int i : n) {
sum += i;
}
System.out.println("sum=" + sum);
}
} finally {
if (is != null) {
try {
is.close();
} catch (IOException ignore) {
}
}
}
}
}
我需要提取除第一列(1、2、3、4、5…)之外的所有数字,并使用它们进行进一步计算。任何帮助,小费都会帮上大忙 您可以将和包中的类用于。A可以逐行读取您的文件:
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File("Path"))));
String line = null;
while((line = br.readLine()) != null){
//do stuff in here
}
在Google中,有一些有用的方法来创建文件
这种特殊情况下的列拆分可以通过类的方法完成
对于拆分,使用Google的库可能对字符串拆分也有很大帮助
数字的处理可以通过使用包装类(如、等)来实现,特别是在各个类中使用静态方法valueOf
Long.valueOf("123");
使用Google Guava的Files.readLines()方法将字符串放入列表中。从那里,可以使用正则表达式或简单地计算字母数来解析其余部分。Integer类附带一个parseInt(String)方法,该方法将单个字符串转换为整数。我将使用一个双循环,一个用于将文件中的文本从字符“\n”中拆分,该字符将为您提供一个字符串数组,其中每个元素在文件中为一行,然后遍历该数组并分解字符“”的每一行。从那时起,只需忽略结果数组中的第一个元素 下面是我所说的函数:
您可以像这样分隔第一列
import java.io.*;
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File("Path"))));
String line = null;
while((line = br.readLine()) != null){
System.out.println(line.substring(line.indexOf(" ") + 1));
}
br.close();
现在,您可以根据需要操作字符串的其余部分。请参阅和int wrapper类
RandomAccessFile f=新的RandomAccessFile(“file.txt”,“r”);//r=读,w=写
字符串行=f.readLine();
字符串[]值=行。拆分(“”);
int[]valueInt;
对于(int i=1;i
或者尝试以下方法:
1 4364 658 4328 666
2 5109 659 5100 638
3 4936 659 4904 677
4 4936 659 4957 639
5 5518 660 5602 672
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class ReadNumbers {
public List<int[]> getNumbers(InputStream is) throws IOException {
List<int[]> result = new ArrayList<int[]>();
BufferedReader reader = null;
String line = null;
try {
reader = new BufferedReader(new InputStreamReader(is));
while ((line = reader.readLine()) != null) {
String[] s = line.split("\\s+");
int[] numbers = new int[s.length - 1];
for (int i = 0; i < numbers.length; i++) {
numbers[i] = Integer.parseInt(s[i + 1]);
}
result.add(numbers);
}
} finally {
if (reader != null) {
reader.close();
}
}
return result;
}
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
ReadNumbers reader = new ReadNumbers();
InputStream is = null;
try {
is = new FileInputStream("numbers.txt");
List<int[]> numbers = reader.getNumbers(is);
for (int[] n : numbers) {
int sum = 0;
for (int i : n) {
sum += i;
}
System.out.println("sum=" + sum);
}
} finally {
if (is != null) {
try {
is.close();
} catch (IOException ignore) {
}
}
}
}
}
导入java.io.BufferedReader;
导入java.io.FileInputStream;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.util.ArrayList;
导入java.util.List;
公共类读编号{
公共列表GetNumber(InputStream is)引发IOException{
列表结果=新建ArrayList();
BufferedReader reader=null;
字符串行=null;
试一试{
reader=新的BufferedReader(新的InputStreamReader(is));
而((line=reader.readLine())!=null){
字符串[]s=line.split(\\s+);
int[]数字=新的int[s.length-1];
for(int i=0;i
使用FileReader读取文件:
File tFile = loadGradleResource("testdata.int");
FileReader fileReader = null;
ArrayList<String> lines = new ArrayList<String>();
try {
String line = null;
fileReader = new FileReader( tFile );
BufferedReader bufferedReader = new BufferedReader( fileReader );
while ( !( line = bufferedReader.readLine() ).isEmpty() ) {
lines.add(line);
}
bufferedReader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
您需要什么具体的帮助或提示?打开文件进行读取,将每行按空格分隔,拒绝第一项,使用剩余项进行计算?这可以分为三个简单的问题:将一行读入字符串,使用空格作为分隔符拆分字符串,以及将一串数字转换为数字。这就是我需要的。我需要把它们分开,然后用它们来计算一些东西。谢谢,我想我已经计算出来了。Concur。顺便说一句,番石榴还使读取文件比标准的阅读器方法容易得多。谢谢你的提示。事实上,番石榴富含这些有用的东西。
for ( String lin : lines ) {
String[] stritems = lin.split( " " );
for ( String it : stritems ) {
// this shows how to parse to integer
System.out.print( Integer.parseInt( it ) + "," );
}
System.out.println();
}