我有一个输入文件,如下所示(例如):
10 12
1
2
...
9
10
1
2
...
11
12
第一行告诉接下来的10行代表part1
接下来的12行代表part2
。
我想创建两个单独的文件part1.txt
和part2.txt
来解析原始的input.txt
文件。
怎么办?好心的任何建议?我正在使用java Scanner。
解决方案(部分):根据以下建议为我工作
Scanner scanner = new Scanner(filename);
try {
String[] first_line = scanner.nextLine().split("\\s+", 3); // reading the first line of the input file
int EdgeCount = Integer.parseInt(first_line[0]);
int VertexCount = Integer.parseInt(first_line[1]);
String hasWeight = first_line[2];
while (scanner.hasNextLine()) {
if(EdgeCount != 0) { // check whether any more edges are left to read from input file
Scanner edge_scanner = new Scanner(scanner.nextLine());
....
答案 0 :(得分:1)
由于这听起来像家庭作业,我不会考虑太多的代码细节,但你可以阅读第一行,然后使用.split("\\s+")
类中的String方法。
执行此操作后,您将在第一个位置使用10
并在第二个位置使用12
。
当您迭代下一行时,只需保留一个计数器并检查计数器的值是否小于或等于10.如果这样,则您知道需要输出一个文件。如果条件不再成立且计数器现在大于10
但小于或等于10 + 12
,那么您知道应该在第二个文件中打印。
答案 1 :(得分:1)
首先,逐行读取文件,先将第10行写入part1.txt,然后在12行之后写入part2.txt。
对于这种使用这样的模式:
BufferedReader br = new BufferedReader(new FileReader(“your input file path”));
String line = null;
int lineCounter = 1;
while( (line = br.readLine()) != null)
{
if( (lineCounter % 23 ) < 11 )
{
//Write part1.txt
}
else if( (lineCounter %23) > 10 )
{
//write part2.txt
}
lineCounter++;
}
br.close();
答案 2 :(得分:1)
试试这个,
Scanner scanner = new Scanner(System.in);
br = new BufferedReader(new FileReader("fileName.txt"));
int first = scanner.nextInt(); //10
int second = scanner.nextInt();//12
int x = 0;
int j = 0;
while ((sCurrentLine = br.readLine()) != null)
{
if (x <= first)
{
x++;
//write in 1st file
}
else if (j <= second)
{
j++;
//write in 2nd file
}
}
br.close();