います。ネットに相当するJava。propertiesファイル?
-
24-09-2019 - |
質問
をジョギングみんなの記憶を、Javaは、これらのファイル拡張子が".プロパティ"では、ASCIIテキストファイルのキーと値のペアになっています。の枠組みには本当の簡単な見分け方は吸えるファイルを本質的に)ファンシhashmap.
二つの大きなメリット(こと)が極端にやすさを両手-編集および読み書きとする。
います。純て相当の焼きか?必ず、思いのXMLファイルがいず手でタイプすべての角度ブラケット、どんなものか知っていればいいたします。また、この吸着すべてのデータへのデータ構造体のメモリを一つのラインが素敵です。
(サイドバー:そういうのは正しき理により解きはなりませんがお問い合わせいただくここでも見られませんでしたがない。)
編集:
との問いに答える暗黙のコメントしてしまったみなければならないというニーズを具体的に読み取java.propertiesファイル。当期純にはうってつけの機能性に相当した。純ます。(やったいなXMLベースの、どうやら忘れられたことです。純ちゃです。)
そして、configファイル 近, ついては親権者の方の同意が必要な店舗の一部を任意の文字列を、アプリconfig情報ので、デザインの設定ファイルがoffできます。
解決
を得ることができ類似の機能のプロパティファイルを内蔵 設定ファイル (VSを追加して、新しい"設定ファイル")ではXMLベースです。
アクセスできます設定の自動生成された設定のクラスで更新し、保存し、設定ファイル-全文を定型のコードです。の設定を強類として指定できます"ユーザー"(保存され、お客様のアプリケーションデータフォルダもしくは"適用"(保存と同じフォルダのエグゼ。
他のヒント
は、.NETの方法はコンフィギュレーション・ファイルを使用することですに。 .NETフレームワークにも申し出 それらを扱うためのAPIがします。
using Nini; using Nini.Config; namespace niniDemo{ public class niniDemoClass{ public bool LoadIni(){ string configFileName = "demo.ini"; IniConfigSource configSource = new IniConfigSource(configFileName); IConfig demoConfigSection = configSource.Configs["Demo"]; string demoVal = demoConfigSection.Get("demoVal", string.Empty); } } }
上記のサンプルの 'demo.ini' ファイルは以下のようになります:
[Demo] demoVal = foobar
demoVal
の値がnullまたは空の場合、それstring.Empty
デフォルト
私はC#を使用して、読み取りプロパティファイルのsimilerソリューションを見つけることができdidntの。私は、javaの場合と同じように同じ結果を得るためにC#を使用して独自のコードを書くことができました。
フォローコードです:
// watchValue- Property attribute which you need to get the value;
public string getProperty(string watchValue)
{
// string propertiesfilename= @"readFile.properties";
string[] lines = System.IO.File.ReadAllLines(propertiesfilename);
for (int i = 0; i < lines.Length; i++)
{
string prop_title = Regex.Split(lines[i], "=")[0].Trim();
if (prop_title == watchValue)
return Regex.Split(lines[i], "=")[1].Trim();
}
return null;
}
私のIdea-
個人的に私は、プロパティファイルへのアクセスがはるかに簡単にXMLファイルにアクセスするよりも、ユーザーにあると信じています。
ですから、XMLよりプロパティファイルを使用することをお勧めいくつかの属性のプロパティを外部化しようとする。
私は単純なテキストを使用しています DotNet.Configすると呼ばれる小さな.NET構成ライブラリを書きましたベースのプロパティファイルには、Javaの.propertyファイルに触発されました。これは、簡単にロードするためのいくつかの素晴らしい機能を備えています。あなたがここにコピーをつかむことができます:
私は個人的には、コードのこの作品のように私は、Web上で見つけました。それは読んで/書き込みプロパティファイルにpersonnalized方法です。
public class Properties
{
private Dictionary<String, String> list;
private String filename;
public Properties(String file)
{
reload(file);
}
public String get(String field, String defValue)
{
return (get(field) == null) ? (defValue) : (get(field));
}
public String get(String field)
{
return (list.ContainsKey(field))?(list[field]):(null);
}
public void set(String field, Object value)
{
field = this.trimUnwantedChars(field);
value = this.trimUnwantedChars(value);
if (!list.ContainsKey(field))
list.Add(field, value.ToString());
else
list[field] = value.ToString();
}
public string trimUnwantedChars(string toTrim)
{
toTrim = toTrim.Replace(";", string.Empty);
toTrim = toTrim.Replace("#", string.Empty);
toTrim = toTrim.Replace("'", string.Empty);
toTrim = toTrim.Replace("=", string.Empty);
return toTrim;
}
public void Save()
{
Save(this.filename);
}
public void Save(String filename)
{
this.filename = filename;
if (!System.IO.File.Exists(filename))
System.IO.File.Create(filename);
System.IO.StreamWriter file = new System.IO.StreamWriter(filename);
foreach(String prop in list.Keys.ToArray())
if (!String.IsNullOrWhiteSpace(list[prop]))
file.WriteLine(prop + "=" + list[prop]);
file.Close();
}
public void reload()
{
reload(this.filename);
}
public void reload(String filename)
{
this.filename = filename;
list = new Dictionary<String, String>();
if (System.IO.File.Exists(filename))
loadFromFile(filename);
else
System.IO.File.Create(filename);
}
private void loadFromFile(String file)
{
foreach (String line in System.IO.File.ReadAllLines(file))
{
if ((!String.IsNullOrEmpty(line)) &&
(!line.StartsWith(";")) &&
(!line.StartsWith("#")) &&
(!line.StartsWith("'")) &&
(line.Contains('=')))
{
int index = line.IndexOf('=');
String key = line.Substring(0, index).Trim();
String value = line.Substring(index + 1).Trim();
if ((value.StartsWith("\"") && value.EndsWith("\"")) ||
(value.StartsWith("'") && value.EndsWith("'")))
{
value = value.Substring(1, value.Length - 2);
}
try
{
//ignore duplicates
list.Add(key, value);
}
catch { }
}
}
}
}
使用例
//load
Properties config = new Properties(fileConfig);
//get value whith default value
com_port.Text = config.get("com_port", "1");
//set value
config.set("com_port", com_port.Text);
//save
config.Save()