黑马程序员技术交流社区
标题:
新人求教 File.getName() 如何调用出来
[打印本页]
作者:
200米王朝
时间:
2014-5-24 12:10
标题:
新人求教 File.getName() 如何调用出来
本帖最后由 200米王朝 于 2014-5-26 10:54 编辑
需求是:获取一个文件名的全名(文件名+扩展名)
只用了 import java.io.File; 调用该方法 (不知道对不对,或者调用的不全)
后面使用 xxx.getName() 的时候提示 "没有为类型 String 定义方法 getName()"
作者:
200米王朝
时间:
2014-5-24 12:18
本帖最后由 200米王朝 于 2014-5-24 12:19 编辑
import java.io.File;
public class Text7 {
public static void main(String[] args)
{
String FileName = new String("黑马万岁.exe");
System.out.println( "文件名是:"+FileName+"...扩展名是:"+getSuffixName(FileName) );
}
public static String getSuffixName(String FileName)
{
String FullName = new String(FileName.getName());
String SuffixName = FullName.substring(FullName.lastIndexOf(',') + 1);
return SuffixName;
}
}
这是代码
红色那里出问题了,提示 没有为类型 String 定义方法 getName()
请指点迷津.
作者:
skill20
时间:
2014-5-24 18:17
File 有getAbsolutePath() 和 getName()方法。
作者:
e10my
时间:
2014-5-24 19:03
import java.io.File;
public class Test7 {
public static void main(String[] args)
{
File FileName = new File("黑马万岁.exe");
System.out.println( "文件名是:"+FileName+"...扩展名是:"+getSuffixName(FileName) );
}
public static String getSuffixName(File FileName1)
{
String FullName = new String(FileName1.getName());
String SuffixName = FullName.substring(FullName.lastIndexOf(',') + 1);
return SuffixName;
}
}
复制代码
正如楼上所说
File 有getAbsolutePath() 和 getName()方法。
而你定义的是String 所有没有getName()方法
作者:
七弦
时间:
2014-5-24 20:51
本帖最后由 七弦 于 2014-5-24 20:55 编辑
System.out.println( "文件名是:"+FileName+"...扩展名是:"+getSuffixName(FileName) );
你这么打印是要打印文件名和扩展名吧?
其实用String类的split方法切割就行了,还以为你封装的File对象呢:L
// String FileName = new String("黑马万岁.exe");
这个其实这样写更简单:String FileName = "黑马万岁.exe";
而且因为new的话在内存中会有两个对象,按我的想法应该是后者稍微优化一点内存的,反正怎样定义都行,
继续讲,因为是用点切割所以要用到正则的知识点,因为这个点比较特殊,要转译一下,这样切:
String[] buf = FileName.spelt("\\."); //最好不要存成后面这样的文件名(abc.txt.java.exe)
StringBuilder sb = new StringBuilder(); //还是防止一下那种文件名吧
for(int x=0; x<buf.length-1; x++){
sb.append(buf[x]+"."); //因为点被切割掉了还要补上
}
System.out.println( "文件名是:"+sb.toString()+"...扩展名是:"+buf[buf.length-1]);
ok了!
作者:
七弦
时间:
2014-5-24 21:15
哎呦我去,刚看到你导了File包!
按你的方法再写一次吧。。。
还有你那那行代码不是String!!!是File!!!
import java.io.File;
public class Text7 {
public static void main(String[] args)
{
File fileName = new File("黑马万岁.exe"); // 注意这行代码!!
System.out.println( getInfo(fileName) );
}
public static String getInfo(File fileName) //只要传进来一个File对象,此方法就能返回文件名和后缀名(还按楼主的格式来)
{
String[] buf = fileName.getName().split("\\."); //合并成一步了,应该能看懂吧
StringBuilder sb = new StringBuilder();
for(int x=0; x<buf.length-1; x++){
sb.append(buf[x]+"."); //之所以用循环还存入容器是因为可能有这种多个点文件:(abc.sss.df.exe)
} //当然用lastIndexOf反向索引也是ok的!能完美的避开这种文件名的情况,这里我就不用了。
return "文件名是:"+sb.toString()+"...扩展名是:"+buf[buf.length-1];
}
}
作者:
200米王朝
时间:
2014-5-25 17:08
谢谢各位的答案!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2