如果在命令行参数中提供了文件名,我编写了一个java代码来创建文件,如果没有输入命令行参数,它将在默认文件夹中创建文件
import java.io.File;
import java.io.IOException;
public class Outputlogs {
private final String path = "C:/temp/logs.txt";
public void createLogFile(String fileName)
{
if(fileName != null && !fileName.isEmpty())
{
File yourFile = new File(fileName);
if(!yourFile.exists()) {
try {
yourFile.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
else
{
File yourFile = new File(path);
if(!yourFile.exists()) {
try {
yourFile.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
public class MainClass()
{
public static void main(String[] argv)
{
String fileName = argv[0];
Outputlogs logs= new Outputlogs();
logs.createLogFile(fileName);
}
如果我提供命令行参数,它成功创建文件但是如果没有输入命令行参数,我得到java.lang.ArrayIndexOutOfBoundsException 如果未输入命令行参数,如何实现我的方案应该创建默认文件夹。请帮忙
答案 0 :(得分:0)
此代码有效。
import java.io.File;
import java.io.IOException;
public class Test {
private static final String path = "C:/temp/logs.txt";
public static void main(String[] args) {
if(args.length > 0) {
createLogFile(args[0]);
} else {
createLogFile(path);
}
}
public static void createLogFile(String fileName)
{
File f = new File(fileName);
if(!f.exists()) {
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
答案 1 :(得分:0)
我假设在某些时候,你设置了filename = args [0],否则就不会出现数组访问错误。如果没有提供参数,则数组args将为null,因此访问args [0]将返回ArrayIndexOutofBounds异常。首先检查长度:
if(args.length > 0)
fileName = args[0];
else
fileName = path;
然后你可以将你的if / else语句组合成一个语句,因为此时它的文件名将是参数或你的默认路径:
File yourFile = new File(fileName);
if(!yourFile.exists()) {
try {
yourFile.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
答案 2 :(得分:0)
这样的事情:
public static void main(String[] args) {
if (args.length > 0)
createLogFile(args[0]) ;
}
答案 3 :(得分:0)
argv [0]表示参数列表(数组)中的第一个元素,因此您必须检查是否至少提供了一个参数。 您可以使用array.length检查数组中的项目数量,因此高于0的所有内容都会告诉您可以访问第一个(或第二个,第三个)参数。
public static void main(String[] argv)
{
String fileName = (argv.length > 0) ? argv[0]:path; // changed
Outputlogs logs= new Outputlogs();
logs.createLogFile(fileName);
}
此行将检查数组的长度是否大于0,如果是,则将fileName设置为argv [0],如果不是,则将路径变量设置为。