Iam尝试将存在于文件中的内容插入到Hashmap中。我想出了一种方法来实现该目的。但是,我没有获得所需的输出下面提到的是试图将文件内容加载到散列表中的代码。无法将文件的内容正确保存到哈希映射中
public static void main (String [] args)
{
try {
StringBuffer fileData = new StringBuffer(1000);
BufferedReader reader = new BufferedReader(new FileReader("xxxxxxx"));
char[] buf = new char[1024];
int numRead=0;
while((numRead=reader.read(buf)) != -1){
String readData = String.valueOf(buf, 0, numRead);
fileData.append(readData);
buf = new char[1024];
}
reader.close();
Map map = new HashMap();
System.out.println(fileData.toString());->(1)
StringTokenizer stringTokenizer = new
StringTokenizer(fileData.toString());
while (stringTokenizer.hasMoreTokens())
{
map.put(stringTokenizer.nextToken().toString(),stringTokenizer.nextToken().toString());
}
Iterator iterator = map.entrySet().iterator();
while(iterator.hasNext())
{
Map.Entry m = (Map.Entry)iterator.next();
System.out.println("key"+m.getKey());->(2)
System.out.println("value"+m.getValue());->(3)
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
当我从code.I提到等式1打印正在逐渐所需的输出(即路径作为密钥和散列作为值):
C:\Users\rishii\Desktop\input_3\com.AmazingBullshit.Holy_1.03.apk
66ec456315a7e6c9338b0387171ca89e
C:\Users\rishii\Desktop\input_3\com.amazon.venezia_release
13.0003.844.1C_6430003104.apk
266796d1b8e2e016753ee3bf1b50e591
C:\Users\rishii\Desktop\input_3\com.android.browser_4.4.2-
eng.build.20150616.1901504.apk
4aa2091b0e21fc655e19d07e2ae20982
C:\Users\rishii\Desktop\input_3\com.android.calculator2_4.4.2-
eng.build.20150616.1901504.apk
85313ccbd39a43952906b70b941d321b
C:\Users\rishii\Desktop\input_3\com.android.calendar_4.4.2-
eng.build.20150616.1901504.apk
3c85cb87f2e134a4157e5f3747e4df1b
C:\Users\rishii\Desktop\input_3\com.android.camera2_2.0.002
(eng.build.ef73894.060315_142358-70)4.apk
482205cda6991f89fb35311dea668013
然而,当我保持它在哈希映射并试图打印它(使用eq(2)和eq(3)),我得到了不同的输出。
key:
dd383abe48e591f40504cbb4dff80958
value:
C:\Users\rishii\Desktop\input_3\com.android.quicksearchbox_4.4.2-
eng.build.20150616.1901504.apk
key:
482205cda6991f89fb35311dea668013
value:
C:\Users\rishii\Desktop\input_3\com.android.contacts_4.4.2-
eng.build.20150616.1901504.apk
key:
C:\Users\rishii\Desktop\input_3\com.AmazingHolyBull_1.03.apk
value:
66ec456315a7e6c9338b0387171ca89e
如果你能观察输出具有changed.Especially在上面的输出,其中的“关键项是路径”和“值项是哈希”的最后两行。我无法弄清楚为什么HashMap的是给人一种怪异的output.I我期待的输出,看起来像一个确切的原因:
键:.apk文件 值的路径:将.apk文件的哈希值。 与第一个输出类似。
下面附带的是它在输入文件中的方式。
C:\Users\rishii\Desktop\baal\apuslauncher-1.apk
af05322cf2c682e8c04a0fb9441867f1
C:\Users\rishii\Desktop\baal\apuslauncher-2.apk
af05322cf2c682e8c04a0fb9441867f1
C:\Users\rishii\Desktop\baal\apuslauncher.apk
af05322cf2c682e8c04a0fb9441867f1
任何建议将非常有帮助!
尝试打印每次调用'stringTokenizer.nextToken()的输出的toString()' – fRoStBiT
它看起来就像每一个值是在一个单独的线。真的吗?如果是这样,不要将整个文件读入内存,也不要使用'StringTokenizer'。只需使用['BufferedReader.readLine()'](https://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html#readLine%28%29)方法即可。 ---另外,请不要使用StringBuffer,而应使用['StringBuilder'](http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html)。 ['StringBuffer']的Javadoc(http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuffer.html)这样说。 – Andreas
@Andreas我想将它们保存到散列图 –