如何将信息与 .text 分开保存到 Java 中的多个字符串中
How to save information separately form .txt into multiple strings in Java
我有一个mydata.txt,我想在其中单独阅读信息。
第一行另存为“动物园编号”、“动物编号”
第2行到第5行保存为“矩阵中动物的数据”
第6行另存为狗“数量”“食欲”“体重”“身高”
2 83
30 50 21 42 0 3
55 56 78 34 2 1
87 76 23 21 3 2
88 22 56 78 32 8
dog 23 79 67 21
我编写的代码如下,但是,我的代码只能将 mydata.txt 中的所有内容重新加载到字符串中。但我想将这些信息分别保存到单独的字符串(对于该矩阵)和变量(例如狗的编号、狗的食欲...)中。我该怎么做?
private void readFile(String fileName){
try{
File file = new File("myData.txt");
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
StringBuffer stringBuffer=new StringBuffer();
String line = bufferedReader.readLine();
while ((line = bufferedReader.readLine()) != null) {
stringBuffer.append(line);
stringBuffer.append("\n");
}
fileReader.close();
bufferedReader.close();
System.out.println("Contents of File: ");
System.out.println(stringBuffer.toString());
}catch (IOException e){
System.out.println(e.getMessage());
}
}
这里你应该使用 String class.
中的 split
方法
String[] rowOne = line.split(" ");
int zooNumber = Integer.valueOf(rowOne[0]);
int animalNumber = Integer.valueOf(rowOne[1]);
因此,当您使用 " "
拆分时,将为您提供由空格拆分的字符串数组。然后逐个阅读索引将为您提供所需的值。
更新答案:您可以按如下方式逐行获取值:
int i = 1;
while ((line = bufferedReader.readLine()) != null) {
if (i == 1) {
String[] rowOne = line.split(" ");
int zooNumber = Integer.valueOf(rowOne[0]);
int animalNumber = Integer.valueOf(rowOne[1]);
} else if(i > 1 && i < 6) {
String[] midRows = line.split(" ");
// retrieve values at index 0, 1, 2, 3, 4 ,5
// First 2nd Row
// Index 0 : 30
// Index 1 : 50
//,...
} else if(i == 6) {
String[] midRows = line.split(" ");
// retrieve values at index 0, 1, 2, 3, 4
// First 6th Row
// Index 0 : dog
// Index 1 : 23
//,...
} else {
break;
}
i++;
}
您可以像这样设置 myData.txt 文件:
zoo_number2,animal_number83
键 1 30,键 2 50...
...
动物狗,dog_appetite 23,...
然后你要做的就是像这样遍历每一行:
import java.util.*;
import java.io.*;
public class App{
public static void main(String[] args) throws IOException{
File file = new File("myData.txt");
FileReader fileReader = new FileReader(file);
Scanner sc = new Scanner(fileReader);
Map<String, String> map = new HashMap<String, String>();
while(sc.hasNextLine()){
String[] inputText = sc.nextLine().trim().split(",");
for(String sentence : inputText){//every key_Value pair in a line
String key = sentence.split(" ")[0];//key, value in key_value pair
String value = sentence.split(" ")[1];
map.put(key, value);
}
}
System.out.println(map);
sc.close();
}
}
输出:{key1=30, key2=50, number=23, zooNumber=2, animal=dog, animal=83}
保持思维导图不接受重复键
我有一个mydata.txt,我想在其中单独阅读信息。
第一行另存为“动物园编号”、“动物编号”
第2行到第5行保存为“矩阵中动物的数据”
第6行另存为狗“数量”“食欲”“体重”“身高”
2 83
30 50 21 42 0 3
55 56 78 34 2 1
87 76 23 21 3 2
88 22 56 78 32 8
dog 23 79 67 21
我编写的代码如下,但是,我的代码只能将 mydata.txt 中的所有内容重新加载到字符串中。但我想将这些信息分别保存到单独的字符串(对于该矩阵)和变量(例如狗的编号、狗的食欲...)中。我该怎么做?
private void readFile(String fileName){
try{
File file = new File("myData.txt");
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
StringBuffer stringBuffer=new StringBuffer();
String line = bufferedReader.readLine();
while ((line = bufferedReader.readLine()) != null) {
stringBuffer.append(line);
stringBuffer.append("\n");
}
fileReader.close();
bufferedReader.close();
System.out.println("Contents of File: ");
System.out.println(stringBuffer.toString());
}catch (IOException e){
System.out.println(e.getMessage());
}
}
这里你应该使用 String class.
中的split
方法
String[] rowOne = line.split(" ");
int zooNumber = Integer.valueOf(rowOne[0]);
int animalNumber = Integer.valueOf(rowOne[1]);
因此,当您使用 " "
拆分时,将为您提供由空格拆分的字符串数组。然后逐个阅读索引将为您提供所需的值。
更新答案:您可以按如下方式逐行获取值:
int i = 1;
while ((line = bufferedReader.readLine()) != null) {
if (i == 1) {
String[] rowOne = line.split(" ");
int zooNumber = Integer.valueOf(rowOne[0]);
int animalNumber = Integer.valueOf(rowOne[1]);
} else if(i > 1 && i < 6) {
String[] midRows = line.split(" ");
// retrieve values at index 0, 1, 2, 3, 4 ,5
// First 2nd Row
// Index 0 : 30
// Index 1 : 50
//,...
} else if(i == 6) {
String[] midRows = line.split(" ");
// retrieve values at index 0, 1, 2, 3, 4
// First 6th Row
// Index 0 : dog
// Index 1 : 23
//,...
} else {
break;
}
i++;
}
您可以像这样设置 myData.txt 文件:
zoo_number2,animal_number83
键 1 30,键 2 50...
...
动物狗,dog_appetite 23,...
然后你要做的就是像这样遍历每一行:
import java.util.*;
import java.io.*;
public class App{
public static void main(String[] args) throws IOException{
File file = new File("myData.txt");
FileReader fileReader = new FileReader(file);
Scanner sc = new Scanner(fileReader);
Map<String, String> map = new HashMap<String, String>();
while(sc.hasNextLine()){
String[] inputText = sc.nextLine().trim().split(",");
for(String sentence : inputText){//every key_Value pair in a line
String key = sentence.split(" ")[0];//key, value in key_value pair
String value = sentence.split(" ")[1];
map.put(key, value);
}
}
System.out.println(map);
sc.close();
}
}
输出:{key1=30, key2=50, number=23, zooNumber=2, animal=dog, animal=83}
保持思维导图不接受重复键