从Windows执行Java程序时会产生不同的输出

时间:2016-02-19 13:14:23

标签: java jar bufferedwriter

我正在运行Java程序来计算树中的所有路径。当我在windows上运行eclipse时,我看到一个output1,但是当我从jar或Mac运行相同的程序时,我注意到不同的输出。有很多差异。甚至文件大小也不同。缓冲区编写器在依赖平台时表现不同吗?

所以,从jar执行或在Mac Eclipse上执行时我有相同的输出,但是从windows eclipse执行时输出不同。

以下是写入文件的代码: 成员变量:

    public  HashMap<String, HashSet<String>> nodeListFromFile = new HashMap<String, HashSet<String>>();

Funciton:
    public void getAllPaths(String root, String path){
        //Since we are assuming there are approximately 12-16 levels
        //And we are expecting a LCA in less than 16 steps
        //All paths evaluated are of max size of 16 using this counter
        int stepCounter = 0;
        File file = new File(outPutfilePath);

        try{
            if(!file.exists()){
                file.createNewFile();
            }  


            FileWriter fw = new FileWriter(file,true);
            BufferedWriter bw = new BufferedWriter(fw);

            //Iterate over each child node
            for(String childNode: nodeListFromFile.get(root)){
                String tempPath = path;
                if((tempPath.indexOf(childNode)  grandChildSet = nodeListFromFile.get(childNode);
                    boolean goodGrandChild = true;
                    for(String gc: grandChildSet){
                        if(!path.contains(gc))
                            goodGrandChild = false;
                    }

                    if(grandChildSet.size()==0 || goodGrandChild){
                        bw.write(tempPath+System.getProperty("line.separator"));
                        bw.flush();
                    }
                }
            }
            //End iteration of children
        }
        catch (Exception e) {
            // TODO: handle exception
        }
        finally{
        }

    }//End of function

2 个答案:

答案 0 :(得分:0)

您使用的是line.separator系统相关

  • 适用于Windows的\r\n
  • 适用于Mac的\r

另外(与位有关),

  • OSX和Linux <{1}}

所以,你得到不同的输出。

答案 1 :(得分:0)

定义&#34;分隔符的另一种解决方案&#34;是

  

文件分割符

示例:

// Removing directories 
int lastDirectory = fileName.lastIndexOf(File.separator);
fileName = fileName.substring(lastDirectory+1);