我刚开始学习Java。正如标题所说......我想知道如何将一些txt文件中的值分配给Java中的数组来处理它们(例如对它们进行排序)。
例如在C ++中:
#include<fstream>
using namespace std;
int v[10];
int main()
{
ifstream fin("num.txt");
int i;
for(i=0;i<10;i++)
fin>>v[i];
}
合适的人。感谢您提供所有信息。我看到这比C ++复杂一点,但我会学到这一点。此外,当我在一家小公司实习时,我看到那里的员工制作了扫描XML文件的代码。我想这要复杂得多,但那没关系。 :)
答案 0 :(得分:2)
如果文件的每一行都是整数,那么:
List<Integer> results = new ArrayList<Integer>();
try
{
File myFile = new File("./num.txt");
Scanner scanner = new Scanner(myFile);
while (scanner.hasNextInt())
{
results.add(scanner.nextInt());
}
}
catch (FileNotFoundException e)
{
// Error handling
}
答案 1 :(得分:0)
我相信这可能有助于您找到解决方案。
好吧,让拖钓不受影响。
PSEUDO CODE:
while not end of file
get next line
put next line in a Array List
请记住,每一行都是String
,您可以使用.split()
解析字符串以获取文件中的所有单词或使用一些REGEX魔法。
修改强>
好的,我看到了另一个anwser,scanner.nextInt()
让我感到畏缩。我必须展示一个实际的代码实现。使用REGEX来表示模式,是一种更优越的农场方法。你可以阅读所有你知道的垃圾数据!即使REGEX现在超出了你的范围,它们也非常有用,因此学习正确的方法来做一些事情非常重要。
List<Integer> list = new ArrayList<Integer>();
BufferedReader reader = new BufferedReader(new FileReader("/path/to/file.txt"));
String line = null;
while ((line = reader.readLine()) != null) {
if(line.matches("[\\s\\d]+"){
String[] temp = line.split(" ");
for(int i = 0; i < temp.length; i++){
list.add(Integer.parseInt(temp[i]));
}
}
}
答案 2 :(得分:0)
以下程序会将文件中的每个字符读取到ArrayList。在这个例子中,空格被加载到ArrayList中,所以如果这不是你想要的,你必须使用一些aditional逻辑:)
如果打算用单词而不是字符填充数组,请创建一个StringBuilder并在循环内部用sb.append(new String(buffer));
替换逻辑
然后,正如progenhard建议的那样,对StringBuilder的返回String使用split()方法;
public class ReadFile {
public static void main(String[] args){
FileInputStream is = null;
try{
File file = new File("src/example/text");
is = new FileInputStream(file);
byte[] buffer = new byte[10];
List<Character> charArray = new ArrayList<Character>();
while(is.read(buffer) >=0){
for(int i=0;i < buffer.length;i++)
charArray.add((char)buffer[i]);
//Used remove the assigned values on buffer for the next iteration
Arrays.fill(buffer, (byte) 0);
}
for(char character : charArray){
System.out.println(character);
}
}catch(IOException e){
System.out.println("Something wrong with the file: " + e);
}finally{
if(is != null){
try {
is.close();
} catch (IOException e) {
System.out.println("Something wrong when closing the stream: " + e);
}
}
}
}
}