你在输入路径要这样输入“ e:\\” 你用递归来获取判断主函数里是不用在去链腊循环的,你这段代码可以改一下:棚信滑
public static void list(File fe){
File[] h=fe.listFiles()
for(int x=0x<h.lengthx++)
{
if(h[x].isDirectory())
list(h[x])
else
System.out.pritln(h[x])
}
}
public 坦好static void main(String[] args)
{
File file=new File("e:\\")
list(file)
}
如果文件数量过多建议不要使用递归,内存会溢出。这个要抛个IO异常。
程序如下:<span style="color:#990000">
</span>File file1 = new File("/home/a123/a")
if (file1.exists()) {
System.out.println("存在文件夹a")
} else {
file1.mkdir()// 文件夹的创建 创建文件夹/home/a123/a
}
File file2 = new File("/home/a123/a/test"没谈)
if (file2.exists()) {
System.out.println("存在文件夹或者文件test")
} else {
try {
file2.createNewFile()// 文件的慎察氏创建,注意与文件夹创建的区别
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
}
/**
* 最简单的文件读写方法是使用类FileWriter
* (它的父类依次是java.io.OutputStreamWriter——>java.io.Writer——>java.lang.Object )
*/
// 下面是向文件file2里面写数据
try {
FileWriter fileWriter = new FileWriter(file2)
String s = new String("This is a test! \n" + "aaaa")
fileWriter.write(s)
fileWriter.close()// 关闭数据流
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
/*
* 这样写数据的话,是完全更新文件test里面的内容,即把以前的东西全部删除,重新输入。
* 如果不想删除以前的数据,而是把新增加的内容增添在文件末尾处。只需要在创建FileWriter对象时候,使用另外一个构造函数即可:
* FileWriter fileWriter=new FileWriter(file2,true)
*/
// 下面是从文件file2读东西
try {
FileReader fileReader = new FileReader(file2)
String s = null
char ch
try {
char[] c = new char[100]
fileReader.read(c,0,2)// 具体想得到文件里面的宽散什么值(单个char?int?还是String?),
System.out.println(c)
fileReader.close()
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
/**
* 具体想得到文件里面的什么值(单个char?int?还是String?),需要知道不通read的不同用法:
* 1. int read() 读取单个字符。
* 2. int read(char[] cbuf) 将字符读入数组。可以再将字符型数组转化位字符串
* 3. int read(char[] cbuf,int off,int len) 将字符读入数组的某一部分。
* 这三个方法都返回一个int值,作用是:读取的字符数,如果已到达流的末尾,则返回 -1.
*/
}
可以通过swing技术实现,继承自JFileChooser 即可。也可以设置固定类型的文件选择。举例:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package hkrt.b2b.util
import java.io.File
//import java.io.FileFilter
import javax.swing.JFileChooser
import javax.swing.filechooser.FileFilter
/**
*/
public class FileChooser extends JFileChooser {
JFileChooser jfc = new JFileChooser()
public String openWin() {
jfc.setAcceptAllFileFilterUsed(false)//设置文件过滤条件,在文件选择中没有“所有文件”的选迟早项
jfc.setFileSelectionMode(JFileChooser.FILES_ONLY)//设置文件选择类型,在这里春旦或只是选择具体文件
jfc.setFileFilter(
new FileFilter() {
@Override
public boolean accept(File f) {
if(f.getName().toLowerCase().endsWith(".xls"扒伍)){
return f.getName().toLowerCase().endsWith(".xls")//添加过滤文件类型。以后缀做判断
} else if (f.getName().toLowerCase().endsWith(".xlsx")){
return f.getName().toLowerCase().endsWith(".xlsx")
}
return false
}
@Override
public String getDescription() {
return "Excel File"//在文件类型中的显示
}
})
jfc.showOpenDialog(null)
File xls = jfc.getSelectedFile()
if(xls == null){
return ""
}
String resultOpen = jfc.getSelectedFile().getPath()//获取文件路径
return resultOpen
}
}
备注:以上方法就获取到了文件的绝对路径,返回值即是路径值。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)