当前位置: 首页 > 知识库问答 >
问题:

将文件文本传入hashmap

龙嘉誉
2023-03-14

我有一点问题试图传入一个文件读取我的程序和排序一致。我不习惯处理文件,我没有办法实现这一点。

///////////类读取文件/////////////////////////////////////////////////////////////////////

导入java.io.*;公共类InFileReader{

private BufferedReader inputStream=空;

私有字符串文件线;

私人建弦人;

公共字符串getFile(File fileRead)抛出FileNotFoundException,IOException{

inputStream = new BufferedReader(new FileReader(fileRead)); //reads files
sb = new StringBuilder();
html" target="_blank">while((fileLine = inputStream.readLine()) != null){//keep reading lines in file till there is none
  sb.append(fileLine).append("\n");
}
return sb.toString(); //returns StringBuffer read values in String form

}}/////////////////////////////////////////////////////读文件类结束//////////////////////////////////////////

public void getFile(File fileRead)引发FileNotFoundException,
IOException{

  try {

    String input = fileReader.getFile(fileRead.getAbsoluteFile());

    HashMap<Integer, Thing.Ship> hashmap = new HashMap<>();
    while (!input.isEmpty()) { // as long as there is data in the file keep looping 
      Scanner sc = new Scanner(input); // scan file

      if (!input.startsWith("//")) {   // take out "//"  from directory 
        String type = "";
        if (sc.hasNext()) {  // if there are character lines get next line
          type = sc.next();

        }
        if (type.equalsIgnoreCase("port")) { // looks for "port"
          world.assignPort(new Thing.SeaPort(sc)); // assigns value  to Seaport 
        } else if (type.equalsIgnoreCase("dock")) {
          world.assignDock(new Thing.Dock(sc));
        } else if (type.equalsIgnoreCase("ship")) {
          Thing.Ship s = new Thing.Ship(sc);
          hashmap.put(s.getIndex(), s);
          world.assignShip(s);
        } else if (type.equalsIgnoreCase("pship")) {
          Thing.Ship s = new Thing.PassengerShip(sc);
          hashmap.put(s.getIndex(), s);
          world.assignShip(s);
        } else if (type.equalsIgnoreCase("cship")) {
          Thing.Ship s = new Thing.CargoShip(sc);
          hashmap.put(s.getIndex(), s);
          world.assignShip(s);
        } else if (type.equalsIgnoreCase("person")) {
          world.assignPerson(new Thing.Person(sc));
        }
      }
    }
    //inputOut.setText(type);
    inputOut.setText(world.toString());
  } catch (Exception e) {
    System.out.println(e + "-----");
  }

}

这里fileRead知道在哪里可以找到要读取的文件“C:\users\abe\ideaprojects\createseaportdatafile\src\text.txt”

字符串输入=fileReader.getFile(fileRead.getAbsoluteFile());

我在这里的目的是传递文件的位置,以便getFile类可以读取它,然后将其排序到HashMap中。再次,我不熟悉如何与文件工作,任何建议或意见将非常感谢。提前谢谢你。

共有1个答案

轩辕经赋
2023-03-14

如果您得到一个FileNotFoundException,则未找到该文件。您说文件名是“C:\users\abe\ideaprojects\createseaportdatafile\src\text.txt”。如果在代码中键入该名称,则必须转义反斜杠:

"C:\\Users\\abe\\IdeaProjects\\CreateSeaPortDataFile\\src\\text.txt". 
 类似资料:
  • 问题内容: 我正在从Google文档中提取数据,进行处理,然后将其写入文件(最终我将其粘贴到Wordpress页面中)。 它具有一些非ASCII符号。如何将这些安全地转换为可以在HTML源代码中使用的符号? 目前,我正在将所有内容都转换为,将它们全部合并为Python字符串,然后执行以下操作: 最后一行存在编码错误: 编解码器无法解码位置12286的字节:序数不在范围内(128) 部分解决方案:

  • 问题内容: 我将日志保存到sdcard上的.txt文件中,但是一旦保存了两行,它就会覆盖它并重新开始? 这是我的代码: 在恢复中挂载/ data后,/ sdcard和/ data / media / 0中的日志文件会显示完整的日志历史记录,但在设备开机时不会显示完整的日志历史记录 问题答案: 这是完成的方式。以下示例代码在单击提交按钮后将详细信息保存到文件中: 希望这可以帮助 :)

  • 问题 你想在文本模式打开的文件中写入原始的字节数据。 解决方案 将字节数据直接写入文件的缓冲区即可,例如: >>> import sys >>> sys.stdout.write(b'Hello\n') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: must be str,

  • 我写了一个函数,允许我从剪贴板中获取四列数据,拆分它,添加一列额外的列,重新组合它,并将其导出为文本文件。 我有两个问题:- 是否可以创建一个文件,其中包含我使用此函数创建的表,以便将该表粘贴到某些文本的中间? 邪恶的笑(Evil Grin的缩写) 其次,我试图修改函数,使其将一个文件名作为变量;即< code>xyztoinp 等等……但这并没有产生带有新文件名的输出;有人知道这是怎么做到的吗?

  • 问题内容: 输出文件包含: 问题出在哪里?如何使用写入文本文件? 问题答案: 你必须写String … 你可以试试。 要么 要么