如何在另一个 class 中调用一个 class 的 main() 方法?
How do I invoke a main() method of one class in another class?
如何在另一个 class 中调用一个 class 的 main()
方法?我有两个 classes SaveData
和 DynamicTest
。两个 classes 都包含一个 main()
方法。我想运行我的主要在DynamicTest
class。如何正确调用 SaveData
?
public class SaveData {
private static final Map<String, Object> myCachedTreeMap = new TreeMap<String, Object>();
public static final List<String> getLines(final String resourceParam, final Charset charset) throws IOException{
System.out.println("Please get: "+resourceParam);
if (myCachedTreeMap.containsKey(resourceParam) ) {
// Use the cached file, to prevent an additional read.
System.out.println("Found in memory : "+resourceParam);
}
else {
// Load the file from disk
System.out.println("Not Found in memory : "+resourceParam);
}
return null;
}
public static void main(String[] args) throws IOException {
String target_dir = "C:\myfiles\config\en";
String output = "C:\myfiles\config\en\output.txt";
File dir = new File(target_dir);
File[] files = dir.listFiles();
if (files == null || files.length < 1) {
System.out.println("File list is empty...");
return;
}
// open the Printwriter
PrintWriter outputStream = new PrintWriter(output);
try {
for (File textFile : files) {
if (textFile.isFile() && textFile.getName().endsWith(".txt")) {
readFromDisk(textFile);
}
}
}
finally {
outputStream.close();
}
String fileNameFromCache = "en_synonyms.txt";
Object Sheet1 = myCachedTreeMap.get(fileNameFromCache);
System.out.println(fileNameFromCache + " : \n" + Sheet1);
}
@SuppressWarnings("resource")
private static void readFromDisk(File textFile) throws FileNotFoundException, IOException {
BufferedReader inputStream;
inputStream = null;
String content = "";
try {
inputStream = new BufferedReader(new FileReader(textFile));
content = readFile(textFile);
System.out.println("Bytes Read = "+content.length());
// Save contents
FileContentsObject Sheet1 = new FileContentsObject(System.currentTimeMillis(),
textFile.lastModified(), content,
textFile.getName(),
getLines(null, null));
// add to map
myCachedTreeMap.put(textFile.getName(), Sheet1);
}
finally {
if (inputStream != null) {
inputStream.close();
}
}
}
private static String readFile(File f) throws FileNotFoundException, IOException, UnsupportedEncodingException {
StringBuilder text = new StringBuilder(1024);
int read, N = 1024 * 1024;
char[] buffer = new char[N];
BufferedReader br = null;
try {
br = new BufferedReader(
new InputStreamReader(
new FileInputStream(f), "UTF8"));
while(true) {
read = br.read(buffer, 0, N);
if (read > 0)
text.append(new String(buffer, 0, read));
if(read < N) {
break;
}
}
}
finally {
if (br != null)
br.close();
}
return text.toString();
}
private static final class FileContentsObject {
private long cachedTime; // currentTime
private long lastModifiedTimestamp;
private String contents;
List<String> lines;
private String fileName;
public FileContentsObject(long cachedTime, long lastModifiedTimestamp,
String contents, String fileName, List<String> lines) {
this.cachedTime = cachedTime;
this.lastModifiedTimestamp = lastModifiedTimestamp;
this.contents = contents;
this.fileName = fileName;
this.lines = lines;
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yy HH:mm:ss");
System.out.println("Current Time & Date:" + sdf.format(cachedTime));
System.out.println("Last Modified Time Stamp:"
+ sdf.format(lastModifiedTimestamp));
}
/**
*
* @return The lines from the file
*/
List<String> getLines() {
return this.lines;
}
public String toString() {
return "Sheet1{" + "fileName='" + fileName + '\'' + ", contents='"
+ contents + '\'' + ", lastModifiedTimestamp="
+ lastModifiedTimestamp + ", CurrentTime&Date="
+ cachedTime + '}';
}
}
}
public class DynamicTest {
public static void main(String[] args) {
Charset charset = Charset.forName("UTF-8");
try {
List<String> lines = CacheData.getLines("en_synonyms", charset) ;
if (lines != null) {
System.out.println("Number of Lines: "+lines.size());
for (String line:lines) {
System.out.println("DynamicTest:: "+line);
}
}
} catch (IOException e) {
e.printStackTrace();
}
try {
List<String> lines = CacheData.getLines("en_stopwords", charset) ;
if (lines != null) {
System.out.println("Number of Lines: "+lines.size());
for (String line:lines) {
System.out.println("DynamicTest:: "+line);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
您可以像调用任何其他静态方法一样调用它:
SaveData.main (args); // it's up to you whether to pass the same args or
// different args
在DynamicTest
的main方法中写这个SaveData.main(args);
静态方法调用:
Class.method();
非静态方法调用:
Class object = new Class();
object.method();
Main declaration is always static
所以你必须像其他 static
方法一样调用它,在你的情况下:
SaveData.main (args);
如何在另一个 class 中调用一个 class 的 main()
方法?我有两个 classes SaveData
和 DynamicTest
。两个 classes 都包含一个 main()
方法。我想运行我的主要在DynamicTest
class。如何正确调用 SaveData
?
public class SaveData {
private static final Map<String, Object> myCachedTreeMap = new TreeMap<String, Object>();
public static final List<String> getLines(final String resourceParam, final Charset charset) throws IOException{
System.out.println("Please get: "+resourceParam);
if (myCachedTreeMap.containsKey(resourceParam) ) {
// Use the cached file, to prevent an additional read.
System.out.println("Found in memory : "+resourceParam);
}
else {
// Load the file from disk
System.out.println("Not Found in memory : "+resourceParam);
}
return null;
}
public static void main(String[] args) throws IOException {
String target_dir = "C:\myfiles\config\en";
String output = "C:\myfiles\config\en\output.txt";
File dir = new File(target_dir);
File[] files = dir.listFiles();
if (files == null || files.length < 1) {
System.out.println("File list is empty...");
return;
}
// open the Printwriter
PrintWriter outputStream = new PrintWriter(output);
try {
for (File textFile : files) {
if (textFile.isFile() && textFile.getName().endsWith(".txt")) {
readFromDisk(textFile);
}
}
}
finally {
outputStream.close();
}
String fileNameFromCache = "en_synonyms.txt";
Object Sheet1 = myCachedTreeMap.get(fileNameFromCache);
System.out.println(fileNameFromCache + " : \n" + Sheet1);
}
@SuppressWarnings("resource")
private static void readFromDisk(File textFile) throws FileNotFoundException, IOException {
BufferedReader inputStream;
inputStream = null;
String content = "";
try {
inputStream = new BufferedReader(new FileReader(textFile));
content = readFile(textFile);
System.out.println("Bytes Read = "+content.length());
// Save contents
FileContentsObject Sheet1 = new FileContentsObject(System.currentTimeMillis(),
textFile.lastModified(), content,
textFile.getName(),
getLines(null, null));
// add to map
myCachedTreeMap.put(textFile.getName(), Sheet1);
}
finally {
if (inputStream != null) {
inputStream.close();
}
}
}
private static String readFile(File f) throws FileNotFoundException, IOException, UnsupportedEncodingException {
StringBuilder text = new StringBuilder(1024);
int read, N = 1024 * 1024;
char[] buffer = new char[N];
BufferedReader br = null;
try {
br = new BufferedReader(
new InputStreamReader(
new FileInputStream(f), "UTF8"));
while(true) {
read = br.read(buffer, 0, N);
if (read > 0)
text.append(new String(buffer, 0, read));
if(read < N) {
break;
}
}
}
finally {
if (br != null)
br.close();
}
return text.toString();
}
private static final class FileContentsObject {
private long cachedTime; // currentTime
private long lastModifiedTimestamp;
private String contents;
List<String> lines;
private String fileName;
public FileContentsObject(long cachedTime, long lastModifiedTimestamp,
String contents, String fileName, List<String> lines) {
this.cachedTime = cachedTime;
this.lastModifiedTimestamp = lastModifiedTimestamp;
this.contents = contents;
this.fileName = fileName;
this.lines = lines;
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yy HH:mm:ss");
System.out.println("Current Time & Date:" + sdf.format(cachedTime));
System.out.println("Last Modified Time Stamp:"
+ sdf.format(lastModifiedTimestamp));
}
/**
*
* @return The lines from the file
*/
List<String> getLines() {
return this.lines;
}
public String toString() {
return "Sheet1{" + "fileName='" + fileName + '\'' + ", contents='"
+ contents + '\'' + ", lastModifiedTimestamp="
+ lastModifiedTimestamp + ", CurrentTime&Date="
+ cachedTime + '}';
}
}
}
public class DynamicTest {
public static void main(String[] args) {
Charset charset = Charset.forName("UTF-8");
try {
List<String> lines = CacheData.getLines("en_synonyms", charset) ;
if (lines != null) {
System.out.println("Number of Lines: "+lines.size());
for (String line:lines) {
System.out.println("DynamicTest:: "+line);
}
}
} catch (IOException e) {
e.printStackTrace();
}
try {
List<String> lines = CacheData.getLines("en_stopwords", charset) ;
if (lines != null) {
System.out.println("Number of Lines: "+lines.size());
for (String line:lines) {
System.out.println("DynamicTest:: "+line);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
您可以像调用任何其他静态方法一样调用它:
SaveData.main (args); // it's up to you whether to pass the same args or
// different args
在DynamicTest
的main方法中写这个SaveData.main(args);
静态方法调用:
Class.method();
非静态方法调用:
Class object = new Class();
object.method();
Main declaration is always static
所以你必须像其他 static
方法一样调用它,在你的情况下:
SaveData.main (args);