【问题标题】:how to split file txt to array in java如何在java中将文件txt拆分为数组
【发布时间】:2018-10-03 00:46:05
【问题描述】:

大家好,如何从文件 txt 中拆分字符串

例如我有文件 服务器.txt

192.168.1.2,80
192.168.1.3,3306

然后我想将 192.168.1.2 192.168.1.3 拆分为 String[] ipserver 然后拆分 80,3306 String[] 端口 并且输出打印所有阵列 ipserver 并打印所有阵列端口 这是我的代码:

String csvFile = "c:/Users/user/Desktop/in.txt";
    String line = "";



    try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {

        while ((line = br.readLine()) != null) {

            // use comma as separator
            String[] ipserver = line.split(";|,");
            String[] port = line.split(",|;");  
                    System.out.println( ipserver[i] );
                    System.out.println( port[i] );


        }

    } catch (IOException e) {
    }

请各位大侠帮帮忙,谢谢

【问题讨论】:

    标签: java arrays netbeans split


    【解决方案1】:

    这应该可以解决问题:

    List<String> ipServerList = new LinkedList();
    List<String> portList = new LinkedList();
    while ((line = br.readLine()) != null) {
        String[] values = line.split(";|,")
        ipServerList.add(values[0]);
        portList.add(values[1]);
    }
    String[] ipServers = ipServerList.toArray(new String[ipServerList.size()]);
    String[] ports = portList.toArray(new String[portList.size()]);
    

    我们创建两个Lists 来存储值。最后我们将它们转换为数组

    【讨论】:

    【解决方案2】:

    如果你只想在分割字符串的过程中打印..

    while ((line = br.readLine()) != null) {
                // use comma as separator
                String[] ipNport = line.split(","); 
                System.out.println( ipNport[0] );
                System.out.println( ipNport[1] );
            }
    

    【讨论】:

      【解决方案3】:

      这样做:

      String toSplit = Files.lines(Paths.get("c:\\Users\\user\\Desktop\\in.txt")).collect(Collectors.joining("\n"));
                 String[] ipserver = null, port = null;
      
              ArrayList<String> ipServerAl = new ArrayList<>();
              ArrayList<String> portAl = new ArrayList<>();
          String[] ipPortPairList = toSplit.split("\\r\\n");
      
          for (String ipPortPair : ipPortPairList) {
              ipServerAl.add(ipPortPair.split(",")[0]);
              portAl.add(ipPortPair.split(",")[1]);
          }
      
          ipserver = ipServerAl.toArray(new String[ipServerAl.size()]);
          port = portAl.toArray(new String[portAl.size()]);
      

      【讨论】:

        【解决方案4】:
        1. 了解如何使用字符串的拆分功能。访问以下链接:

        https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String)

        2.

        一个。如果您只想打印到控制台,请按照@Rakibul Haq 的回答。

        b.如果您想稍后存储/处理它,请按照@Shanu gupta 的回答。 湾。如果您从 CSV 文件中读取它。使用 apache poi 库: https://poi.apache.org/(我认为你是 Java 新手,所以至少现在可能很难)

        c。从 .txt 文件中读取。你做对了。恭喜!

        下面是一个工作代码:

        package com.bt.neweserve.agent.controller;
        
        import java.io.BufferedReader;
        import java.io.FileReader;
        import java.io.IOException;
        import java.util.ArrayList;
        import java.util.Arrays;
        import java.util.List;
        
            public class A {
        
            public static void main(String[] args) throws IOException {
        
                String csvFile = "c:/Users/611654029/Desktop/in.txt";
                String line = "";
                BufferedReader br = new BufferedReader(new FileReader(csvFile));
        
                // Using lists from Collections framework. Note: Dynamic array. Size is not
                // defined, it is dynamic.
                List<String> ipList = new ArrayList<String>();
                List<String> portList = new ArrayList<String>();
                while ((line = br.readLine()) != null) {
                    String[] result = line.split(",");
                    ipList.add(result[0]);
                    portList.add(result[1]);
                }
        
                br.close();
                System.out.println("Using dynamic array ie ArrayList");
                System.out.println(ipList);
                System.out.println(portList);
        
                // using array. Size is defined/constant.
        
                br = new BufferedReader(new FileReader(csvFile));
                String[] ipListArray = new String[10]; // assuming you have 10 lines in the file.
                String[] portListArray = new String[10];
        
                int i = 0; // Initial index of the array.
                while ((line = br.readLine()) != null) {
                    String[] result = line.split(",");
                    ipListArray[i] = result[0];
                    portListArray[i] = result[1];
                    i++; // Note the increment of array index
                }
                br.close();
                System.out.println("Using static array i.e. array of predefined size");
                System.out.println(Arrays.toString(ipListArray));
                System.out.println(Arrays.toString(portListArray));
            }
            }
        

        希望这会有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-04-05
          • 2012-02-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-04-08
          相关资源
          最近更新 更多