Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的(字符串).split(";=";);它不工作了吗?_Java_File_Hashmap - Fatal编程技术网

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(“=”)的问题?