Java读取文本文件

时间:2013-12-18 15:52:30

标签: java

我是Java新手,我的确从编码IRC Bot(pircbot)开始。

我的Bot应该用作Twitch.tv Bot,直到现在每个星期都能正常工作。

现在我遇到了一个问题,或者我想改变一个事情;

我已经清理了一些Code并编写了3个Basic Strings;

public String OwnerChannel;
public String Coinname;
public String Owner;


OwnerChannel = "xyz";
Coinname = "xyz";
Owner = "xyz";

这些是我的主要投入。我想在抽搐时切换到另一个频道,我只需要编辑这3个部分。

现在,我会谎言从.txt文件中读取这个内容。 那可能吗?

例如;

filename:BOTsettings.txt

内部应该看起来像

Owner = "xyz"            // Edit "xyz" for changes
OwnerChannel = "xyz"     // Edit "xyz" for changes
Coinname = "xyz"         // Edit "xyz" for changes

如果有人能告诉我如何在这里管理这个,我会很高兴:D

问候并感谢您的时间!

5 个答案:

答案 0 :(得分:1)

我会使用java.util.Properties。它默认使用以下格式的配置文件:

key1=value1
key2=value2

加载这些配置属性非常简单:

private Properties loadProperties() throws IOException {
    Properties props = new Properties();
    props.load(new FileReader(new File("conf.txt")));
    return props;
}

然后您可以通过以下方式阅读属性:

Properties props = loadProperties();
System.out.println(props.get("key1");

答案 1 :(得分:0)

你不必使用文件。您可以从命令行或系统属性中读取此设置。您可以使用选项-D

运行代码
 -DOwner=axyz

并按如下方式阅读此值:

String value = System.getProperty("Owner");

但是如果你想从文件中读取,那么我建议使用属性。让java为你工作。看看这篇关于属性的帖子: How to use Java property files?

答案 2 :(得分:0)

前言,文件阅读绝对是Java中的一件事。

ex)


InputStream in = new FileInputStream("inputFile.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String currentLine;

try {
  while((currentLine = br.readLine()) != null)
  {
    // output the current line
    System.out.println(currentLine);
  }

} catch(Exception e) {
  System.out.println(e);
} finally {
  in.close();
}

一次阅读整个文件:


InputStream in = new FileInputStream("foo.txt");
String fileContents;

try {
  fileContents = IOUtils.toString(inputStream);
} finally {
  in.close();
}

可以使用ReaderInputStream来阅读文件。这些都是接口,这意味着它们是描述如何任何被认为是读者或InputStream必须起作用的合同。对于ReaderInputStream 功能,必须以某种特定方式实施。

在上述情况中,in在左侧声明为InputStream,并在右侧声明特定类型InputStream(如何实现)。

请注意,这些接口的实现也列在doc中。

另一个需要注意的关键是使用 in.close(); finally 语句用于确保即使应用程序出错也会执行一段代码。这样做是为了确保释放文件句柄。

存储配置属性

配置属性通常是简单的键值对,例如:


key1=value1
key2=value2

虽然在某些情况下存储更复杂的数据结构(如列表或词典/地图)可能会有所帮助。为此,可以使用更好的序列化格式。通常更适合存储此类数据的格式是YAML,以及YAML的一个简单子集,可以开始使用JSON

JSON是一种表达Javascript对象的结构,它是简单的词典/值键映射。值可以是字符串,数字,字典和列表。字典或列表可能包含值。这允许表示比简单键值存储更复杂的数据。

答案 3 :(得分:0)

首先将txt文件粘贴到资源中,然后使用下面的代码。

AssetManager am = context.getAssets();
InputStream is = am.open("test.txt");

或者将您的文本文件放在原始文件夹中并使用此

InputStream is = getResources().openRawResource(R.raw.test);

答案 4 :(得分:-1)

试试这个:

try
  {
  FileInputStream in = new FileInputStream("BOTsettings.txt");
  BufferedReader br = new BufferedReader(new InputStreamReader(in));
  String strLine;

  while((strLine = br.readLine())!= null)
  {
   System.out.println(strLine);
  }

  }catch(Exception e){
   System.out.println(e);
  }

然后将strLine存储在一个数组或类似的东西中。