java中怎么从文件中读取数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中怎么从文件中读取数相关的知识,希望对你有一定的参考价值。

比如:文件中放的是37107287533902102798797998220837590246510135740250
这样连续的数字,通过什么办法可以把这串数字读入,并存放在一个整形数组里面?

1.package txt;
2.
3.import java.io.BufferedReader;
4.import java.io.File;
5.import java.io.FileInputStream;
6.import java.io.InputStreamReader;
7.
8./**
9. * 读取TXE数据
10. */
11.public class ReadTxtUtils
12. public static void main(String arg[])
13. try
14. String encoding = "GBK"; // 字符编码(可解决中文乱码问题 )
15. File file = new File("c:/aa.txt");
16. if (file.isFile() && file.exists())
17. InputStreamReader read = new InputStreamReader(
18. new FileInputStream(file), encoding);
19. BufferedReader bufferedReader = new BufferedReader(read);
20. String lineTXT = null;
21. while ((lineTXT = bufferedReader.readLine()) != null)
22. System.out.println(lineTXT.toString().trim());
23.
24. read.close();
25. else
26. System.out.println("找不到指定的文件!");
27.
28. catch (Exception e)
29. System.out.println("读取文件内容操作出错");
30. e.printStackTrace();
31.
32.
33.
java读取TXT文件中的数据,每一行就是一个数,返回一个数组,代码?
?
List list=new ArrayList();
BufferedReader br=new BufferReader(new InputStreamReader(new FileInputStream(new File("in.txt"))));
String str=null;
while((str=br.readLine())!=null)

list.add(new Integer(str));


Integer[] i=new Integer[list.size()];
list.toArray(i);

TXT文本中如据形如:
123
456
789

读入二维数组效果为:
temp[0][]=1,2,3;
temp[1][]=4,5,6;
temp[2][]=7,8,9;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.*;

public class xx
public static void main(String[]args)
String s;
int[][]save=new int[3][3];
try
BufferedReader in =new BufferedReader(new FileReader("C:\\txt.txt"));
int i=0;
while((s=in.readLine())!=null)
save[i][0]=Integer.parseInt(s.substring(0,1));
save[i][1]=Integer.parseInt(s.substring(1,2));
save[i][2]=Integer.parseInt(s.substring(2,3));
i++;


catch(FileNotFoundException e)
e.printStackTrace();

catch(IOException e)
e.printStackTrace();

for(int i=0;i<3;i++)

for(int j=0;j<3;j++)
System.out.print(save[i][j]);

System.out.println();





?
BufferedReader bf=new BufferedReader(new FileReader("Your file"));
String lineContent=null;
int i = 0;
int [][] temp = new int [3][];
while((lineContent=bf.readLine())!=null)
String [] str = lineContent.split("\\d");// 将 lineContent 按数字拆分
for(int j = 0; j < str.length(); j++)
int [i][j] = Integer.parseInt(str[j]);

i++;


scp|cs|ff|201101
这是d:\\a.txt的数据,与“|”分割取数据出来,保存在变量a;b;c;d里

import java.io.*;

public class Test
public static void main(String[] args)throws Exception
String a, b, c, d;
StringBuffer sb = new StringBuffer();
BufferedReader br = new BufferedReader(new FileReader("d:\\a.txt"));
String s = br.readLine();
while(s != null)
sb.append(s);
s = br.readLine();

s = sb.toString();
String[] str = s.split("|");
a = str[0];
b = str[0];
c = str[0];
d = str[0];

参考技术A 整形肯定不可以的。必须隔开多少位放入数组
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class ABC
public static void main(String[] args) throws IOException

String fileName = "data.txt";//存放数据的文件
final int splitLength = 5;//要分割的单位,如果是5,就是每隔5个数字分一次,如果是1,就是
//每1个数字放入数组中

List<String> numberList = getFileContent(fileName);

Integer[] numAry = splitNumberList(numberList, splitLength);

for(int value: numAry)
System.out.println(value);



private static Integer[] splitNumberList(List<String> numberList, int splitLength)

List<Integer> integerList = new ArrayList<Integer>();

for(int i = 0; i < numberList.size(); i++)
String lineContent = numberList.get(i);

while(lineContent.length() >= splitLength)
integerList.add(Integer.parseInt(lineContent.substring(0, splitLength)));
lineContent = lineContent.substring(splitLength);


if(lineContent.length() != 0)
integerList.add(Integer.parseInt(lineContent));



return integerList.toArray(new Integer[0]);


private static List<String> getFileContent(String fileName) throws IOException
BufferedReader bf = new BufferedReader(new FileReader(fileName));

List<String> list = new ArrayList<String>();

String content = null;

while((content = bf.readLine()) != null)
if(!content.trim().equals(""))
list.add(content);



return list;


--------------------------结果里面输出4位的,因为最前面1位是0
37107
28753
39021
2798
79799
82208
37590
24651
1357
40250
参考技术B 可以用scanner先读取这字符串,然后根据题意分割成整形数放入数组再处理。追问

可不可以来个具体实现。。我试了很多方法都达不到我所说的那样。

追答

那你打算怎么分割这个字符串啊?这数太大估计放不进长整形里的

追问

就是一个数字放一个,把他们分割成一个一个的数字

追答

和scanner的效果差不多,总之处理读取字符的话用readline来读取一行比较方便点。
晕,这么多回答了。。

public static void main(String[] args) throws Exception
File file = new File("文件路径");
InputStream is = new FileInputStream(file);
BufferedReader reader= new BufferedReader(new InputStreamReader(is));
String str;
while((str = reader.readLine()) != null)
int[] array = makeArray(str);
for(int i:array)
System.out.println(i);



public static int[] makeArray(String str)
int length = str.length();
int[] rtn = new int[length];
for(int i=0; i <length; i++)
rtn[i] = Integer.valueOf(str.substring(i, i+1));

return rtn;

本回答被提问者采纳
参考技术C 是啊 你问的有点太粗了
1你是想从什么里面读取出来 配置文件? text? xml?,,,,,,,
2你是想怎么放 或者说 你到底想锝到 什么结果?
package dao;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class Test007

/**
* @param args
* 请先建立c:\b.txt这个文件
* 内容如下
* 37107287533902102798797998220837590246510135740250
*/
public static void main(String[] args)
File file = new File("c:\\b.txt");
String str = null;
try
FileReader f_reader = new FileReader(file);
BufferedReader reader = new BufferedReader(f_reader);
str = reader.readLine();
String num_long = "";
while (str != null)
System.out.println("读取到的数据为: "+str);
num_long = str;
str = reader.readLine();

System.out.println("开始对 "+num_long+ "进行操作...");
String num_small = "";
System.out.println(num_long.length());
List num_list = new ArrayList();
int[] num_list_int = new int[num_long.length()];
for (int i = 0; i < num_long.length(); i++)
num_list.add(num_long.subSequence(i, i+1));
num_list_int[i] = Integer.parseInt((String) num_list.get(i));

System.out.print("放入到整数数列num_list_int里的值为: ");
for (int i = 0; i < num_list_int.length; i++)
System.out.print(" "+num_list_int[i]);

catch (FileNotFoundException e)
e.printStackTrace();
catch (IOException e1)
e1.printStackTrace();


参考技术D 根据楼上的说法,给出代码片段。未经测试:

Scanner sc = new Scanner(new FileInputStream(new File("你文件的路径")));
String line = sc.nextLine();
int[] nums = new int[line.length()];

for (int i = 0 ; i<line.length(); i++)
String numString = line.substring(i, i+1);
nums[i] = Integer.parseInt(numString);

从文件中读取行数、单词数、字符数

【中文标题】从文件中读取行数、单词数、字符数【英文标题】:Read number of lines, words, characters from a file 【发布时间】:2011-04-15 11:28:48 【问题描述】:

我可以很容易地读取行数,使用:

ifstream in(file);
string content;
while(getline(in, content))

   // do stuff

或者我可以使用以下方式轻松读取单词和字符的数量:

ifstream in(file)
string content;
int numOfCharacters = 0;
int numOfWords = 0;
while(in >> content)

   ++numOfWords;
   numOfCharacters += content.size();

但我不想读取文件两次。如何读取文件一次,并找出行数、单词数和字符数?

PS:如果有简单的方法,我会欢迎 Boost 建议。 谢谢。

【问题讨论】:

【参考方案1】:

阅读该行并为每一行计算单词。第二部分见 stringstream。

(我没有提供更多信息,这看起来太像作业了)。

【讨论】:

不是功课,只是从linux实现wc命令。你给了我足够的信息。谢谢。 重新实现 wc 似乎是一种家庭作业,或者至少是一种你要学习的练习,并且你不希望直接给你一个完整的解决方案。 我只是在为 windows 做一个 shell,没什么大不了的,使用 Boost.Filesystem 只是为了适应这个库。【参考方案2】:

这可以通过一个简单的boost.spirit.qi 解析器来完成。

【讨论】:

【参考方案3】:

坚持使用 iostreams 解决方案:您可以从通过 getline() 读取的每一行创建一个 strstream,并对其进行字/字符计数操作,在所有行中累积。

【讨论】:

是的,我总是忘记 stringstream :) 谢谢。

以上是关于java中怎么从文件中读取数的主要内容,如果未能解决你的问题,请参考以下文章

java 怎么读取文件中的字符和数据

Java - 确定要从波形文件中读取以获取时间戳的字节数

read(),readline(),readlines()区别与用法

java怎么从一个文件中随机读取一句话

怎么用java从文件中读取图片和写入图片到文件里

java从文件读取对象