将文本文件数据分配给java变量

时间:2015-06-22 12:52:50

标签: java

enter image description here我很确定我真的很接近这个工作。我有一个包含批处理文件输出的文本文件。我想将文本文件中的计算机名称分配给JLabel selectedComputerFromAD。目前,文本文件输出如下所示:

"CN=COUD111235,OU=Workstations,OU=Mis,OU=Accounts,DC=FL,DC=NET"

我需要抓住CN等于所以我想要的是lblSelectedComputer = COUD111235 这是我到目前为止所拥有的。

            ComputerQuery.sendParam();

             String sCurrentLine = null, CN = null;
             try (BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\anoc5f\\workspace\\ControlPanel\\resultofbatch.txt")))
                {

                    while ((sCurrentLine = br.readLine()) != null) 
                    {
                        if(sCurrentLine.matches(".*CN=([^,]*).*"))
                        {

                            Pattern p1 = Pattern.compile(".*CN=([^,]*),");
                            Matcher m = p1.matcher(sCurrentLine);
                            m.find();
                            CN = m.group(1);
                        }

                    }

                    if(CN != null)
                    {
                        //TODO do somethign with CN
                        System.out.println(CN);
                    }
                    else
                    {
                        System.out.println("CN not found");
                    }

                } catch (FileNotFoundException e1) {
                    e1.printStackTrace();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }


            }


    });

目前选择的ComputerFromAD.setText(sCurrentLine);不起作用。我甚至都不确定我是否正在为它分配正确的变量。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:1)

这对我有用:

    String str = "CN=COUD111235,OU=Workstations,OU=Mis,OU=Accounts,DC=FL,DC=NET";
    String regex = "CN=([^,]*),";
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(str);
    m.find();
    String computerName = m.group(1);

引用代码的完整示例:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class Test {

    public static void main(String[] args) 
    {
        String sCurrentLine = null, CN = null;
        try (BufferedReader br = new BufferedReader(new FileReader("resultofbatch.txt")))
        {

            while ((sCurrentLine = br.readLine()) != null) 
            {
                if(sCurrentLine.matches(".*CN=([^,]*).*"))
                {

                    Pattern p = Pattern.compile(".*CN=([^,]*),");
                    Matcher m = p.matcher(sCurrentLine);
                    m.find();
                    CN = m.group(1);
                }

            }

            if(CN != null)
            {
                //TODO do somethign with CN
                System.out.println(CN);
            }
            else
            {
                System.out.println("CN not found");
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }


    }

}

答案 1 :(得分:0)

你使用的模式错了。您没有拆分sCurrentLine,而是拆分字符串","

你还需要从事件派发线程中调用setText(),否则在完全重绘之前你不会看到它(如果你最小化并最大化帧,它应该变得可见)。< / p>

答案 2 :(得分:0)

这应该有效:

String CN = sCurrentLine.split("CN=",-1)[1].split(",",-1)[0];