Как избежать жесткого кодирования текстовых файлов в Java
Я работаю над проектом, где 3 текстовых файла хранятся в папке. Я пытаюсь избежать жесткого кодирования 3 путей в исходный файл.
При этом я хотел бы запустить программу, набрав в командной строке:java sourceCode folderName.
Пожалуйста, смотрите ниже, чего я достиг
:
import java.util.Scanner ;
import java.io.*;
public class Indexes {
//main method
public static void main (String[] args)throws IOException {
for (String MyFolder: args) {
Scanner textFile =new Scanner(inputFile);
//read the inputFile
inputFile=textFile.nextLine();
//two other objects
File input =new File(inputFile);
Scanner scan=new Scanner(input);
int thesize=0;
int page=0;
while (scan.hasNext()){
String readprt=scan.next();
//char[] c = s.toCharArray(); //conversion into character
char [] charArray=readprt.toCharArray(); //conversion of word of type string into type character
int size=charArray.length ; //length of word
thesize +=size;
if (thesize <=100){
}
}
}
}
}
import java.util.Scanner ;
import java.io.*;
public class Indexes {
/*
//creation of constructor
public ReadFile (String inf){
}
public WriteFile (String outf){
} */
//main method
public static void main (String[] args)throws IOException {
for (String MyFolder: args) {
MyFolder="C:/Users/youpi/Desktop/DataScience/DS730/Lesson2/MyFolder/huckfinn.txt";
MyFolder="C:/Users/youpi/Desktop/DataScience/DS730/Lesson2/MyFolder/wap.txt";
MyFolder="C:/Users/youpi/Desktop/DataScience/DS730/Lesson2/MyFolder/moby.txt";
//System.out.println(MyFolder);
//create objects for ("huckfinn.txt")
//String inputFile="huckfinn.txt" ; //, outputFile="huckfinn_output.txt" ;
String inputFile=MyFolder ;
Scanner textFile =new Scanner(inputFile);
//read the inputFile
inputFile=textFile.nextLine();
//write into the outputFiles by defining an object for each of the files
PrintWriter printer1 =new PrintWriter("C:/Users/youpi/Desktop/DataScience/DS730/Lesson2/MyFolder/huckfinn_output.txt");
PrintWriter printer2 =new PrintWriter("C:/Users/youpi/Desktop/DataScience/DS730/Lesson2/MyFolder/wap_output.txt");
PrintWriter printer3 =new PrintWriter("C:/Users/youpi/Desktop/DataScience/DS730/Lesson2/MyFolder/moby_output.txt");
//two other objects
File input =new File(inputFile);
Scanner scan=new Scanner(input);
int thesize=0;
int page=0;
while (scan.hasNext()){
String readprt=scan.next();
//char[] c = s.toCharArray(); //conversion into character
char [] charArray=readprt.toCharArray(); //conversion of word of type string into type character
int size=charArray.length ; //length of word
/*printer1.println(readprt+":"+" "+size); */
//printer1.println("Size of"+" "+readprt+":"+ " "+counter);
//printer2.println(readprt+":"+" "+size);
//printer2.println("Size of"+" "+readprt+":"+ " "+counter);
//printer3.println(readprt+":"+" "+size);
//printer3.println("Size of"+" "+readprt+":"+ " "+counter);
//read next word on the next line
/* }
}
} */
//printer1.println(readprt);
//printer2.println(readprt);
//printer3.println(readprt);
// the government of the people by the people
thesize +=size;
if (thesize <=100){
printer1.println(readprt+":"+" "+size);
printer2.println(readprt+":"+" "+size);
printer3.println(readprt+":"+" "+size);
continue ;
} else {
page ++;
printer1.println("character count <=100:"+ " "+(thesize-size));
printer1.println(" Page"+" "+"-"+page+"-"+" ");
printer2.println("character count <=100:"+ " "+(thesize-size));
printer2.println(" Page"+" "+"-"+page+"-"+" ");
printer3.println("character count <=100:"+ " "+(thesize-size));
printer3.println(" Page"+" "+"-"+page+"-"+" ");
thesize=0;
}
}
//close objects
printer1.close();
printer2.close();
printer3.close();
//object to read in methods
//Index ReadObj = new Index();
}
}
}
1 ответ
Я также новичок в JAVA, но я думаю, что вопрос очень простой. Если вы уже знаете, что такое path
тогда вы должны создать .properties
файл для вашего проекта и прочитать путь из этого файла конфигурации.
Если вы можете знать path
только во время выполнения, вы должны прочитать его с args
вставляется в командную строку (или другой входной ресурс, доступный во время выполнения).
если префикс path
известен, но суффикс не значит, вы должны использовать комбинацию двух подходов, описанных выше, и сделать следующее:
String fullPath = prefix + suffix;