java文件夹以及文件

Eniak 2010-01-29 02:42:01
怎么在建立一个文件夹和若干文件呢

1 有一个 a.java文件,a.java的功能就是在他的当前目录下,建立一个AA的文件夹,

2 在这个文件夹下,a.java能建立个文件
...全文
3279 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuwenxuan1992 2011-11-25
  • 打赏
  • 举报
回复
这样啊
涛涛_2009 2010-06-13
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 taozhaocailiu 的回复:]
一个完整的类,让你看看吧!很好用的。

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
……
[/Quote]
写的很好,学习中……
重返春季 2010-01-29
  • 打赏
  • 举报
回复
一个完整的类,让你看看吧!很好用的。

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.StringTokenizer;

/**
*
* @author 文章整理:学网 http://www.xue5.com
*
*/
public class FileOperate {
public static FileOperate op = null;

public static FileOperate getInstance() {
if (op == null)
op = new FileOperate();
return op;
}

private static String message;

public FileOperate() {
}

/**
* 读取文本文件内容
*
* @param filePathAndName
* 带有完整绝对路径的文件名
* @param encoding
* 文本文件打开的编码方式
* @return 返回文本文件的内容
*/
public String readTxt(String filePathAndName, String encoding)
throws IOException {
encoding = encoding.trim();
StringBuffer str = new StringBuffer("");
String st = "";
try {
FileInputStream fs = new FileInputStream(filePathAndName);
InputStreamReader isr;
if (encoding.equals("")) {
isr = new InputStreamReader(fs);
} else {
isr = new InputStreamReader(fs, encoding);
}
BufferedReader br = new BufferedReader(isr);
try {
String data = "";
while ((data = br.readLine()) != null) {
str.append(data + " ");
}
} catch (Exception e) {
str.append(e.toString());
}
st = str.toString();
} catch (IOException es) {
st = "";
}
return st;
}

/**
* 新建目录
*
* @param folderPath
* 目录
* @return 返回目录创建后的路径
*/
public String createFolder(String folderPath) {
String txt = folderPath;
try {
java.io.File myFilePath = new java.io.File(txt);
txt = folderPath;
if (!myFilePath.exists()) {
myFilePath.mkdir();
}
} catch (Exception e) {
message = "创建目录操作出错";
}
return txt;
}

/**
* 把传入的“D:\\workspace\\AnalyzePdmUtil2.0\\output\\CN”路径转为“D:|workspace|AnalyzePdmUtil2.0|output|CN”。
* @param path
* @return
*/
public static String changeReplacePath(String path){
char[] ay=path.toCharArray();
StringBuffer sbr=new StringBuffer();
for(int i=0;i<ay.length;i++){
if(ay[i]!='\\')
sbr.append(ay[i]);
else
sbr.append('|');
}
return sbr.toString();
}

/**
* 多级目录创建
*
* @param folderPath
* 准备要在本级目录下创建新目录的目录路径 例如 c:myf
* @param paths
* 无限级目录参数,各级目录以单数线区分 例如 a|b|c
* @return 返回创建文件后的路径 例如 c:myfa c
*/
public String createFolders(String folderPath, String paths) {
String txts = folderPath;
try {
String txt;
txts = folderPath;
StringTokenizer st = new StringTokenizer(paths, "|");
for (int i = 0; st.hasMoreTokens(); i++) {
txt = st.nextToken().trim();
if (txts.lastIndexOf("/") != -1) {
txts = createFolder(txts + txt);
} else {
txts = createFolder(txts + txt + "/");
}
}
} catch (Exception e) {
message = "创建目录操作出错!";
}
return txts;
}

/**
* 新建文件
*
* @param filePathAndName
* 文本文件完整绝对路径及文件名
* @param fileContent
* 文本文件内容
* @return
*/
public void createFile(String filePathAndName, String fileContent) {

try {
String filePath = filePathAndName;
filePath = filePath.toString();
File myFilePath = new File(filePath);
if (!myFilePath.exists()) {
myFilePath.createNewFile();
}
FileWriter resultFile = new FileWriter(myFilePath);
PrintWriter myFile = new PrintWriter(resultFile);
String strContent = fileContent;
myFile.println(strContent);
myFile.close();
resultFile.close();
} catch (Exception e) {
message = "创建文件操作出错";
}
}

/**
* 有编码方式的文件创建
*
* @param filePathAndName
* 文本文件完整绝对路径及文件名
* @param fileContent
* 文本文件内容
* @param encoding
* 编码方式 例如 GBK 或者 UTF-8
* @return
*/
public void createFile(String filePathAndName, String fileContent,
String encoding) {

try {
String filePath = filePathAndName;
filePath = filePath.toString();

File myFilePath = new File(filePath);
if (!myFilePath.exists()) {
myFilePath.createNewFile();
}
PrintWriter myFile = new PrintWriter(myFilePath, encoding);
String strContent = fileContent;
myFile.println(strContent);
myFile.close();
} catch (Exception e) {
message = "创建文件操作出错";
}
}

/**
* 删除文件
*
* @param filePathAndName
* 文本文件完整绝对路径及文件名
* @return Boolean 成功删除返回true遭遇异常返回false
*/
public boolean delFile(String filePathAndName) {
boolean bea = false;
try {
String filePath = filePathAndName;
File myDelFile = new File(filePath);
if (myDelFile.exists()) {
myDelFile.delete();
bea = true;
} else {
bea = false;
message = (filePathAndName + "删除文件操作出错");
}
} catch (Exception e) {
message = e.toString();
}
return bea;
}

/**
* 删除文件夹
*
* @param folderPath
* 文件夹完整绝对路径
* @return
*/
public void delFolder(String folderPath) {
try {
delAllFile(folderPath); // 删除完里面所有内容
String filePath = folderPath;
filePath = filePath.toString();
java.io.File myFilePath = new java.io.File(filePath);
myFilePath.delete(); // 删除空文件夹
} catch (Exception e) {
message = ("删除文件夹操作出错");
}
}

/**
* 删除指定文件夹下所有文件
*
* @param path
* 文件夹完整绝对路径
* @return
* @return
*/
public boolean delAllFile(String path) {
boolean bea = false;
File file = new File(path);
if (!file.exists()) {
return bea;
}
if (!file.isDirectory()) {
return bea;
}
String[] tempList = file.list();
File temp = null;
for (int i = 0; i < tempList.length; i++) {
if (path.endsWith(File.separator)) {
temp = new File(path + tempList[i]);
} else {
temp = new File(path + File.separator + tempList[i]);
}
if (temp.isFile()) {
temp.delete();
}
if (temp.isDirectory()) {
delAllFile(path + "/" + tempList[i]);// 先删除文件夹里面的文件
delFolder(path + "/" + tempList[i]);// 再删除空文件夹
bea = true;
}
}
return bea;
}

/**
* 复制单个文件
*
* @param oldPathFile
* 准备复制的文件源
* @param newPathFile
* 拷贝到新绝对路径带文件名
* @return
*/
public static void copyFile(String oldPathFile, String newPathFile) {
try {
int bytesum = 0;
int byteread = 0;
File oldfile = new File(oldPathFile);
if (oldfile.exists()) { // 文件存在时
InputStream inStream = new FileInputStream(oldPathFile); // 读入原文件
FileOutputStream fs = new FileOutputStream(newPathFile);
byte[] buffer = new byte[1444];
while ((byteread = inStream.read(buffer)) != -1) {
bytesum += byteread; // 字节数 文件大小
System.out.println(bytesum);
fs.write(buffer, 0, byteread);
}
inStream.close();
}
} catch (Exception e) {
message = ("复制单个文件操作出错");
}
}

/**
* 复制整个文件夹的内容
*
* @param oldPath
* 准备拷贝的目录
* @param newPath
* 指定绝对路径的新目录
* @return
*/
public void copyFolder(String oldPath, String newPath) {
try {
new File(newPath).mkdirs(); // 如果文件夹不存在 则建立新文件夹

File a = new File(oldPath);
String[] file = a.list();
File temp = null;
for (int i = 0; i < file.length; i++) {
if (oldPath.endsWith(File.separator)) {
temp = new File(oldPath + file[i]);
} else {
temp = new File(oldPath + File.separator + file[i]);
}
if (temp.isFile()) {
FileInputStream input = new FileInputStream(temp);
FileOutputStream output = new FileOutputStream(newPath
+ "/" + (temp.getName()).toString());
byte[] b = new byte[1024 * 5];
int len;
while ((len = input.read(b)) != -1) {
output.write(b, 0, len);
}
output.flush();
output.close();
input.close();
}
if (temp.isDirectory()) {// 如果是子文件夹
copyFolder(oldPath + "/" + file[i], newPath + "/" + file[i]);
}
}
} catch (Exception e) {
message = "复制整个文件夹内容操作出错";
}
}

/**
* 移动文件
*
* @param oldPath
* @param newPath
* @return
*/
public void moveFile(String oldPath, String newPath) {
copyFile(oldPath, newPath);
delFile(oldPath);
}

/**
* 移动目录
*
* @param oldPath
* @param newPath
* @return
*/
public void moveFolder(String oldPath, String newPath) {
copyFolder(oldPath, newPath);
delFolder(oldPath);
}

public String getMessage() {
return this.message;
}
}
WPooh 2010-01-29
  • 打赏
  • 举报
回复
学习。
xiesisi3 2010-01-29
  • 打赏
  • 举报
回复
前提是你环境都配对了。如果你都没配我就不好说什么了
xiesisi3 2010-01-29
  • 打赏
  • 举报
回复
第一步
进入cmd,在D盘,创建一个名为A.java的文件,用记事本打开,把我那段代码复制进去。
第二步
执行javac A.java
第三步
执行java A

然后看结果, 要是结果没出来我就去死
windgh 2010-01-29
  • 打赏
  • 举报
回复
做临时文件夹而已,不用取当前目录吧
在做成jar后,取class的当前目录会出问题的,这时候只能取根目录,也就成jar的目录了

最好还是做成配置文件,配一个临时文件目录
如果是简单应用,闲配置麻烦,就hardcode一个指定目录到代码里面吧。
Eniak 2010-01-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 aniao 的回复:]
当然了,如果只用普通相对路径,建立的就只会是在工程根目录下,而且这个还跟IDE或者运行环境有关,如果你最后打了JAR包,那情况还会有变化。

不过你可以试试用这种方法取得路径:

URI uri = a.class.getProtectionDomain().getCodeSource()
.getLocation().toURI();
url = new URL(uri.toURL(), "./" + "AAA");

File dir = new File(url.getFile());
dir.mkdir()


最好路径中更没有任何一个文件夹带有中文名字或空格,否则得话File dir = new File(url.getFile());这一步还得解码。


[/Quote]

哥,您的方法不行啊,到了bin目录下面了,另外,您能说说怎么再做成JAR之后,也让他们在一个目录下么
应为我要先生成一个文件夹,这个文件夹下,生成两个文件,对这两个问价处理后,也就是做一些运算,然后把两个文件删掉。
谢谢
hanwangyu 2010-01-29
  • 打赏
  • 举报
回复
你能确定你路径没有写错吗
windgh 2010-01-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 cangyingzhijia 的回复:]
引用 4 楼 eniak 的回复:
怎么改成当前路径,空着吗?

谢谢了,实在不会啊

File fdir = new File(".");
这就是当前路径

[/Quote]

跟用IDE或者cmd无关,都是class的所在位置,不是java文件。
xiesisi3 2010-01-29
  • 打赏
  • 举报
回复
还有一点,JAVA是严格区分大小写的!!这个一定要弄清楚 而且类名一定大写开头
xiesisi3 2010-01-29
  • 打赏
  • 举报
回复
哎,最近老发错。
应该是

你在cmd下执行 java A才会出现你想要的 在IDE里面做是不一样的
xiesisi3 2010-01-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 eniak 的回复:]
到时间里出来了,但是位置好像不对。

a.java的位置在 workspace\JSHOPIKnow\src\Try
而建立的 AA 在 workspace\JSHOPIKnow\

是不是差了一点啊?
另外,我把123.txt和 a.java放在一起,也就是都在 Try下面,怎么访问不了呢
[/Quote]

你在cmd下执行 java A.java才会出现你想要的 在IDE里面做是不一样的
Aniao 2010-01-29
  • 打赏
  • 举报
回复
当然了,如果只用普通相对路径,建立的就只会是在工程根目录下,而且这个还跟IDE或者运行环境有关,如果你最后打了JAR包,那情况还会有变化。

不过你可以试试用这种方法取得路径:

URI uri = a.class.getProtectionDomain().getCodeSource()
.getLocation().toURI();
url = new URL(uri.toURL(), "./" + "AAA");

File dir = new File(url.getFile());
dir.mkdir()


最好路径中更没有任何一个文件夹带有中文名字或空格,否则得话File dir = new File(url.getFile());这一步还得解码。

苍蝇①号 2010-01-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 eniak 的回复:]
怎么改成当前路径,空着吗?

谢谢了,实在不会啊
[/Quote]
File fdir = new File(".");
这就是当前路径
Eniak 2010-01-29
  • 打赏
  • 举报
回复
到时间里出来了,但是位置好像不对。

a.java的位置在 workspace\JSHOPIKnow\src\Try
而建立的 AA 在 workspace\JSHOPIKnow\

是不是差了一点啊?
另外,我把123.txt和 a.java放在一起,也就是都在 Try下面,怎么访问不了呢
xiesisi3 2010-01-29
  • 打赏
  • 举报
回复
晕。。。。

import java.io.*;

public class A {

public static void main(String[] args) {

File fdir = new File("AA");

if (false == fdir.exists())
fdir.mkdir();
File f = new File(fdir.getAbsolutePath() + "/" + "123.txt");
if (false == f.exists())
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}

}
}
Eniak 2010-01-29
  • 打赏
  • 举报
回复
怎么改成当前路径,空着吗?

谢谢了,实在不会啊
Dazzlingwinter 2010-01-29
  • 打赏
  • 举报
回复
还是javaIO的基础部分了
focusforce 2010-01-29
  • 打赏
  • 举报
回复
执行的是class,a.java的当前目录没有什么意义。
加载更多回复(1)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧