如果有人可以帮助我请在java程序中,我有一个名为“input.txt”的文件,其中包含
等文字Agent1 R F 2 0
Agent2 R B 4 5
Agent4 C E 2 2
Agent3 R F 3 11
我想将所有行保存在不同的变量中并对它们进行操作。 在这里说我想将第一行保存到字符串中,我将其称为line1,第二行我将保存在名为line2第三行的字符串中,我将保存在名为line3的字符串上,依此类推。
是他们的任何方式。我的txt文件可以有任意数量的行,我想保存这些行,因为字符串可以对它们起作用。
简单地说,我需要一个像循环这样的东西来继续改变变量的名称。但我不知道该怎么做。
这是我的代码,直到现在,但我想要将行保存为任何数据类型的字符串
而不是输出任何帮助都非常感激。
答案 0 :(得分:1)
试试这个。
public static Map<String, String> loadFile(Reader reader)
throws IllegalArgumentException{
Map<String, String> mapList = new TreeMap<String, String>();
if(reader == null)
{
throw new IllegalArgumentException("Reader not valid");
}
String line;
innerReader = new BufferedReader(reader);
int countLine = 0;
try
{
while((line = innerReader.readLine()) != null)
{
if (line == null || line.trim().isEmpty())
throw new IllegalArgumentException(
"Line Empty");
mapList.put("line"+String.valueOf(countLine), line);
countLine++;
}
} catch (IOException e) {
}
return mapList;
}
在主要添加此内容以尝试您的代码。
Map<String, String> mapList = new TreeMap<String, String>(Collections.reverseOrder());
try {
mapList = loadFile(new FileReader("YourFile.txt"));
} catch (IOException e) {
e.printStackTrace();
}
for (Map.Entry entry : mapList.entrySet()) {
System.out.println(entry.getKey() + ", " + entry.getValue());
}
安这是输出。
line0,Agent1 R F 2 0
line1,Agent2 R B 4 5
line2,Agent4 C E 2 2
第3行,Agent3 R F 3 11
要在文件中打印,请添加:
private static PrintWriter innerWriter;
public static void printMap(Map<String, String> myMap, Writer writer)
throws IOException {
if(writer == null)
{
throw new IOException("Cannot open file");
}
innerWriter = new PrintWriter(writer);
for (Map.Entry entry : myMap.entrySet()) {
innerWriter.write(entry.getKey() + ", " + entry.getValue() + "\n");
//OR THIS FOR ONLY VALUES
// innerWriter.write(entry.getValue() + "\n");
}
innerWriter.close();
}
这是主要的
try {
printMap(mapList, new FileWriter("FileOutput.txt"));
} catch (IOException e) {
e.printStackTrace();
}
答案 1 :(得分:1)
您不能像在刚才更改名称时那样创建变量。您可以使用List
存储文件中的数据并在以后处理。
File file = new File("input.txt");
Scanner scanner = new Scanner(file);
List<String> names = new ArrayList<String>();
while (scanner.hasNext()) {
String line = scanner.nextLine();
names.add(line);
}
// Now all the lines from the file are stored in the list.
// You can do the processing you need to do.
将List
的{{1}}转换为Strings
数组,并使用String
方法对数组进行排序。我们将提供自定义Arrays.sort
以根据我们的需要对数组进行排序。
Comparator
这里假设线条总是包含五个元素,我们按行中的第四个位置编号排序。
<强>输出:强>
String nameArray[] = names.toArray(new String[names.size()]);
Arrays.sort(nameArray, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
String array1[] = o1.split(" ");
String array2[] = o2.split(" ");
return array1[3].compareTo(array2[3]);
}
});