Java 我的(字符串).split(";=";);它不工作了吗?
我想把一个字符串转换成一个字符串[],但它没有按我希望的方式工作!我的代码:Java 我的(字符串).split(";=";);它不工作了吗?,java,file,hashmap,Java,File,Hashmap,我想把一个字符串转换成一个字符串[],但它没有按我希望的方式工作!我的代码: public static void get(HashMap<String, String> saves, File file) throws UnsupportedEncodingException, FileNotFoundException, IOException{ if (!file.exists()){ return; } InputStreamR
public static void get(HashMap<String, String> saves, File file) throws UnsupportedEncodingException, FileNotFoundException, IOException{
if (!file.exists()){
return;
}
InputStreamReader reader;
reader = new InputStreamReader(new FileInputStream(file), "UTF-16");
String r = null;
String[] s;
BufferedReader bufreader = new BufferedReader(reader);
while((r=bufreader.readLine()) != null){
s = r.split("=");
if (s.length < 2){
System.out.println(s.length);
System.out.println(s[0]);
return;
}
saves.put(s[0].toString(), s[1].toString());
s = null;
}
}
它只是打印:
1
??????????????????
-
-
它应该读取的内容(文件中的内容):
因此,我希望它将值放入hashmap:
saves.put("1", "welcome");
saves.put("2", "hello");
saves.put("3", "bye");
saves.put("4", "goodbye");
但是s=e.split(“=”)没有进行拆分,而是将字符串设置为“??”
谢谢大家! 看来您使用了错误的编码。 您的输入文件并不像Java代码所期望的那样是真正的
UTF-16
我将您的示例数据保存在一个文件中,结果也被破坏了
我的系统上的默认编码是UTF-8,因此我使用以下命令更改了文件的编码:
iconv -f utf-8 -t utf-16 orig.txt > converted.txt
在converted.txt
上使用程序时,
它产生预期的输出
如果我使用orig.txt
,它也会产生预期的输出,
并在程序中进行以下简单更改:
reader = new InputStreamReader(new FileInputStream(file), "UTF-8");
您可以确保文件是UTF-16编码的,
如果不是,转换它,
或者在创建
InputStreamReader
时使用正确的编码。您似乎使用了错误的编码。
您的输入文件并不像Java代码所期望的那样是真正的UTF-16
我将您的示例数据保存在一个文件中,结果也被破坏了
我的系统上的默认编码是UTF-8,因此我使用以下命令更改了文件的编码:
iconv -f utf-8 -t utf-16 orig.txt > converted.txt
在converted.txt
上使用程序时,
它产生预期的输出
如果我使用orig.txt
,它也会产生预期的输出,
并在程序中进行以下简单更改:
reader = new InputStreamReader(new FileInputStream(file), "UTF-8");
您可以确保文件是UTF-16编码的,
如果不是,转换它,
或者在创建
InputStreamReader
时使用正确的编码您确定您的数据文件是UTF-16吗?好吧,它是一个.txt文件,java文件是新的,但写入该文件的工作非常完美!你能在你的原始问题中粘贴几行文件吗?文件中的所有行都是1=欢迎2=你好…@3kings刚刚做了同样的事情,但我刚刚发现它为什么打印“--”是因为我做了Sting.join((我使用的hashmap),“-”);因此,它没有读取任何表示它只是“null”或“你确定你的数据文件是UTF-16吗?好吧,它是一个.txt文件,我是新的java文件,但写入到该文件的工作非常完美!你能在你的原始问题中粘贴几行文件吗?文件中的所有行都是1=欢迎2=你好…@3kings刚刚做了同样的事情,但我刚刚发现它为什么打印“--”是因为我做了Sting.join((我使用的hashmap),“-”);因此,它没有读取任何表示它只是“null”或“如果输入文件需要是UTF-16,则转换它。如果您不想转换它,那么找到它的编码,并适当地更改Java代码。在我的回答中,UTF-8只是一个例子,您需要根据您的用例和系统进行调整。我已经对它进行了更改,以便它不使用任何UTF,但在我将其更改为UTF-8之前,返回了问题,但这可能是r.split(“=”)的问题?如果输入文件需要是UTF-16,则转换它。如果您不想转换它,那么找到它的编码,并适当地更改Java代码。在我的回答中,UTF-8只是一个例子,您需要根据您的用例和系统进行调整。我已经对它进行了更改,以便它不使用任何UTF,但在我将其更改为UTF-8之前,返回了问题,但这可能是r.split(“=”)的问题?