在字符串中获取错误我试图传递给main中的Createnewfile函数调用

时间:2014-11-21 16:30:14

标签: java

我唯一的问题是我得到了一个错误,我评论过。我愿意将索引1处的字符串(token [])数据发送到main中的Createnewfile()方法。我无法实现它。请指导我应该做什么。

import java.util.*;
import java.io.File;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;


class CreateFile
{
    public static void main( String[] args )
    {   

    Scanner S = new Scanner (System.in);
    System.out.println ("FileExplorer");

    System.out.println ("Select:");
    System.out.println ("1.create new file");
    System.out.println("2. Enter text in the new created file ");
    System.out.println ("3.View List");
    System.out.println ("4.Display contents of particular file");
    System.out.println ("5.Delete a selected file");
    System.out.println ("6.Copy files to other directory");
    System.out.println ("7.Cut files from one directory to other");

    System.out.println ("My File Explorer:");
    String phrase = S.nextLine();
    String delims = "[ ]+";
    String[] tokens = phrase.split(delims);
    for (int i = 0; i < tokens.length; i++)
        System.out.println(tokens[i]);

    if (tokens[0].equals ( "createfile") )
    {
        System.out.println ("Create");
        Createnewfile( tokens[] );    //I get an error here, please tell me how to send 
                                                  //the tokens[1] index 1 string to my  createnewfile function
    }
    if (tokens[0].equals ( "entertext") )
    {
        System.out.println ("entering text");
        String St = tokens[1];
        Entertext(St);
    }
    if (tokens[0].equals ( "showcontent") )
    {
        System.out.println ("Displaying contents");
    }
    if (tokens[0].equals ( "List") )
    {
        System.out.println ("Listing all .txt files");
    }
    if (tokens[0].equals ( "delete") )
    {
        System.out.println ("Deleting the selected file");
    }

}

public void Createnewfile( String [] tokens)
{
    try 
        {

          File file = new File(tokens[1]);

          if (file.createNewFile())
          {
            System.out.println("File is created!");
          }
          else
          {
            System.out.println("File already exists.");
          }

        }
        catch (Exception e) 
        {
          e.printStackTrace();
        }
}


public static void Entertext(String St)
{
    try     
        {
            Scanner S = new Scanner (System.in);
            String content = S.nextLine();
            File file = new File( St);
            FileWriter fw = new FileWriter(file.getAbsoluteFile());
            BufferedWriter bw = new BufferedWriter(fw);
            bw.write(content);
            bw.close();

            System.out.println("Done");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2 个答案:

答案 0 :(得分:1)

如果你正在尝试数组引用,只需丢失[]

Createnewfile(tokens); 

然而, 只是传递tokens[1]

你的Createnewfile方法始终使用tokens[1]这是非常奇怪的 - 这种方法更有意义的是拥有String参数(而不是String[])然后你可以称之为:

Createnewfile(tokens[1]);

仅传递对要用于创建文件的字符串的引用 - 例如,就像您对Entertext方法所做的那样。

我也强烈敦促您了解Java中的命名约定,并遵循它们。 (所以你的方法是createNewFileenterText等。)

答案 1 :(得分:1)

你不必使用令牌旁边的括号,像这样发送

Createnewfile(tokens);