Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I need a java method public static String[] loadFile(String fname, String...line

ID: 3599734 • Letter: I

Question

I need a java method public static String[] loadFile(String fname, String...lineRange). lineRange show how many lines should be loaded. We have to invoke method like this: String array[] = loadFile("myfile.txt", "1-9"); String array[] = loadFile("myfile.txt", "^-$");// from first to last

String array[] = loadFile("myfile.txt", "7,7,7,7");// i want to load 7th line four times

String array[] = loadFile("myfile.txt", "-"); // it means i want to load all file

String array[] = loadFile("myfile.txt", "-5, -5, -5"); // i want to load file from start to 5 three times

String array[] = loadFile("myfile.txt", "5-1"); // i want to load file from 5 line to first.

String array[] = loadFile("myfile.txt", "$, $, $"); // 3 times last line....

and in the main method print loadFile with different lineRange.

Focus how we can proceed lineRange like String with "-" : "1-9", "5-1", "-2,-2,-2", "-", "^-$", "$,$,$", "7, 7, 7, 7, 7", etc

Thanks

Explanation / Answer

import java.io.File;

import java.util.ArrayList;

import java.util.Scanner;

public class FileLoader {

public static String[] loadFile(String fname, String lineRange){

ArrayList<String> allLines = new ArrayList<>();

ArrayList<String> finalLines = new ArrayList<>();

String[] lineOut = null;

try{

Scanner sc = new Scanner(new File(fname)); //Opening file to read

while(sc.hasNext()){

allLines.add(sc.nextLine()); //Reading all lines

}

sc.close();

}

catch(Exception ex){

System.out.println("Can Not Open File");

}

String filterTockn[] = lineRange.split(","); //spliting lineRange argument by comma and getting all tockens

int numOfTocken = filterTockn.length;

for(int i=0; i<numOfTocken;i++){ //Processing all tockens

String tkn = filterTockn[i];

if(tkn.equals("^-$")||tkn.equals("-")){ //Case for all file

finalLines.addAll(allLines);

}

else if(tkn.contains("-")){ // Case for range

String values[] = tkn.split("-");

int startRange = 0;

int endRange = allLines.size()-1;

if(values.length==1){ //Case for one range["-4"]

if(values[0].equals("")||values[0].equals("^"))

endRange = 0;

else if(values[0].equals("$"))

endRange = allLines.size()-1;

else{

endRange = Integer.parseInt(values[0]);

}

}

else if(values.length==2){ //Case for both range [5-7]

if(values[0].equals("")||values[0].equals("^"))

startRange = 0;

else if(values[0].equals("$"))

startRange = allLines.size()-1;

else{

startRange = Integer.parseInt(values[0]);

}

if(values[1].equals("")||values[1].equals("^"))

endRange = 0;

else if(values[1].equals("$"))

endRange = allLines.size()-1;

else{

endRange = Integer.parseInt(values[1]);

}

//System.out.println("StartRange:"+startRange);

//System.out.println("EndRange:"+endRange);

}

//Handing forward and reverse range

if(startRange<=endRange){

for(int j=startRange; j<endRange;j++){

finalLines.add(allLines.get(j));

}

}

else{

for(int j=startRange; j>endRange;j--){

finalLines.add(allLines.get(j));

}

}

}

}

lineOut = new String[finalLines.size()];

for(int i=0;i<finalLines.size();i++){

lineOut[i] = new String(finalLines.get(i)); //

}

return lineOut;

}

public static void main(String[] args) {

String lines[] = loadFile("Employee.txt", "^-$");

lines = loadFile("Employee.txt", "2-$,1-3");

lines = loadFile("Employee.txt", "-2,-2,-2");

lines = loadFile("Employee.txt", "2-10,1-3");

}

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote