我是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
问候并感谢您的时间!
答案 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();
}
可以使用Reader或InputStream来阅读文件。这些都是接口,这意味着它们是描述如何任何被认为是读者或InputStream必须起作用的合同。对于Reader或InputStream 到功能,必须以某种特定方式实施。
在上述情况中,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存储在一个数组或类似的东西中。