0

私はJavaにかなり慣れていないので、ファイルを読み取ろうとしています。

配列として Java にインポートする必要があるデータ テキスト ファイルがあります。

データ ファイルの最初の行は名前の行です。すべての変数は最初の行に名前があり、データは列にクラスター化されています。これを Java にインポートし、MATLAB のベクトルであるかのように、すべての変数を必要に応じてエクスポートできるようにしたいだけです。したがって、基本的にはデータを取得し、各ベクターにタグを付けます。コードをできるだけ汎用にする必要があるため、可変数の列と行を読み取る必要があります。私が信じている非効率的な方法を使用して配列を作成することができました。次に、配列を複数の配列に分割してから、それらを数値に変換する必要があります。しかし、それらが属するベクトルに従って番号をグループ化する必要があります。

テキスト ファイルは Excel スプレッドシートから作成されるため、基本的には、ベクトルを作成するさまざまな測定値の列が含まれています。行のデータを含む別のベクトルの各列。

実装しようとしてたくさんのコードを検索しましたが、助けなしでは進められないところまで来ました。誰かが何らかの意味で続行する方法を教えてもらえますか. Javaでこれを行うのが最善の方法ではないことを私は知っているので、おそらく読み取り部分も改善します。これが私が手に持っているものです:

package Testing;

import java.io.*;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;

public class Read1 {

    public static void main(String[] args) {
        try {
            FileReader fin = new FileReader("C:/jade/test/Winter_Full_clean.txt");
            BufferedReader in = new BufferedReader(fin);
            String str = "";
            int count = 0;
            String line;
            while ((line=in.readLine()) != null) {
                if (count==0) {
                    str = line;
                }
                else if (in.readLine()!=null) {
                    str = str + line;
                }
                count++;                
            }

            in.close();
            //System.out.printf(str);

            System.out.print(tokens);
       } catch (Exception e) {
          System.out.println("error crap" + e.getClass());
       }

    }


    //{

    //    Path yourFile = Paths.get("C:/jade/test/Winter_Full_clean.txt");
    //    Charset charset = Charset.forName("UTF-8");

    //    List<String> lines = null;
    //    try {
    //        lines = Files.readAllLines(yourFile, charset);
    //    } catch (IOException e) {
              // TODO Auto-generated catch block
    //        e.printStackTrace();
    //    }
    //    String[] arr = lines.toArray(new String[lines.size()]);
    //    System.out.println(arr);  
    //}



}
4

1 に答える 1

0

機能するコードがいくつかあり、テキストファイルを配列に読み取り、タブで分割します( tsv ファイル)。これを開始点として適応させて初期データを読み込み、配列内に含まれるデータに基づいて、ロジックを適切に変更できるはずです。

  try (BufferedReader reader = new BufferedReader(new FileReader(path))) { //path is a String pointing to the file
                int lineNum = 0;
                String readLine;
                while ((readLine = reader.readLine()) != null) { //read until end of stream
                    if (lineNum == 0) { //Skip headers, i.e. start at line 2 of your excel sheet
                        lineNum++;
                        continue;
                    }
                    String[] nextLine = readLine.split("\t"); //Split on tab
                    for (int x = 0; x < nextLine.length; x++) { //do something with ALL the lines.
                        nextLine[x] = nextLine[x].replace("\'", "");
                        nextLine[x] = nextLine[x].replace("/'", "");
                        nextLine[x] = nextLine[x].replace("\"", " ");
                        nextLine[x] = nextLine[x].replace("\\xFFFD", "");
                    }
                //In this example, to access data for a certain column, 
                //call nextLine[1] for col 1, nextLine[2] for col 2 etc. 
                } //close your loop and go to the next line in your file
} //close your resources. 
于 2013-02-19T20:01:25.550 に答える