java.util.prefs.Preferences işlevleriyle (Windows 8'de Java 8'de) çalışıyorum. Ve Windows Kayıt Defterine yeni anahtarlar yazabileceğim çalışır. Bu nedenle, Preferences.systemRoot() yöntemini sistem için Tercihler nesnesini kullanmak için kullanıyorum ve Windows Kayıt Defteri'nde bir düğüme eşlenen Tercihler nesnesini almak için node() yöntemini kullanın. Ve iyi şeyler yaratıyor.Java'da, WindowsPreferences neden büyük harfler için eğik çizgileri kullanıyor?
Düğüm için kullanıyorum anahtar, tüm büyük harfleri ("RBI") bir dizedir. Windows Kayıt Defteri'ndeki düğüme baktığımda, adında eğik çizgilerle "/ R/B/I" olarak geliyor.
Bunun garip olduğunu düşündüm, bu yüzden biraz kazdım ve bunun kasıtlı olduğu anlaşılıyor. Windows ortamında (java.util.prefs.WindowsPreferences) Tercihlerin uygulanmasını sağlayan sınıfı buldum ve yöntem windows kayıt defterine gönderilen değerleri oluşturmak için kullanılan bir statik yöntem toWindowsName olduğunu. Bunun için JavaDoc'u .... yılında
Yani, Basit kodlama, büyük harflerle, bir eğik çizgi katacak./** * Converts value's or node's name to its Windows representation * as a byte-encoded string. * Two encodings, simple and altBase64 are used. * <p> * <i>Simple</i> encoding is used, if java string does not contain * any characters less, than 0x0020, or greater, than 0x007f. * Simple encoding adds "/" character to capital letters, i.e. * "A" is encoded as "/A". Character '\' is encoded as '//', * '/' is encoded as '\'. * The constructed string is converted to byte array by truncating the * highest byte and adding the terminating <tt>null</tt> character. * <p> * <i>altBase64</i> encoding is used, if java string does contain at least * one character less, than 0x0020, or greater, than 0x007f. * This encoding is marked by setting first two bytes of the * Windows string to '/!'. The java name is then encoded using * byteArrayToAltBase64() method from * Base64 class. */
Bunun neden gerekli olduğunu bilen var mı? Kayıt Defterinin büyük/küçük harfe duyarlı değerlerle başa çıkabileceğini düşünmüştüm, ama bu bunu yapamayacağını gösteriyor mu?
Bu konuda çalışabilirim, bunun neden yapıldığını merak ediyorum.
Adlandırma şemasını büyük/küçük harfe duyarlı hale getirmeye çalışıyorlar. –
Kabul edildi, ancak RegEdit'i kullanarak Büyük/küçük harfe duyarlı dizeleri girebiliyorum (orada bol miktarda var). Ve diğer araçları kullanarak o seçenek vardı. Belki de en sonunda kullanılan yerel yöntemlere yapılan çağrılarla ilgili bazı geçici çözümlerdir. – EdH
Dize, bir bayt dizisi olarak kodlanmış gibi görünüyor. Hangisi iyi? Şimdi, bunu yapmanın tek sebebi (bu son dört kelime önemli olan) bunu yapmak için alt ve büyük harflerin farklı bayt değerlerine sahip olmamanız olurdu. Fakat yine de, bildiğim kadarıyla, küçük harf ve büyük harflerin farklı bayt değerleri vardır. Yani, gerçekten gerekli değil mi? – EdH