您当前的位置:首页 > 互联网教程

Java IO 问题 创建一个新文件夹。 并且写入一个文件

发布时间:2025-05-21 04:39:11    发布人:远客网络

Java IO 问题 创建一个新文件夹。 并且写入一个文件

一、Java IO 问题 创建一个新文件夹。 并且写入一个文件

*以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。

public static void readFileByBytes(String fileName){

File file= new File(fileName);

System.out.println("以字节为单位读取文件内容,一次读一个字节:");

in= new FileInputStream(file);

while((tempbyte= in.read())!=-1){

System.out.println("以字节为单位读取文件内容,一次读多个字节:");

byte[] tempbytes= new byte[100];

in= new FileInputStream(fileName);

ReadFromFile.showAvailableBytes(in);

//读入多个字节到字节数组中,byteread为一次读入的字节数

while((byteread= in.read(tempbytes))!=-1){

System.out.write(tempbytes, 0, byteread);

*以字符为单位读取文件,常用于读文本,数字等类型的文件

public static void readFileByChars(String fileName){

File file= new File(fileName);

System.out.println("以字符为单位读取文件内容,一次读一个字节:");

reader= new InputStreamReader(new FileInputStream(file));

while((tempchar= reader.read())!=-1){

//对于windows下,\r\n这两个字符在一起时,表示一个换行。

//但如果这两个字符分开显示时,会换两次行。

//因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。

if(((char) tempchar)!='\r'){

System.out.print((char) tempchar);

System.out.println("以字符为单位读取文件内容,一次读多个字节:");

char[] tempchars= new char[30];

reader= new InputStreamReader(new FileInputStream(fileName));

//读入多个字符到字符数组中,charread为一次读取字符数

while((charread= reader.read(tempchars))!=-1){

if((charread== tempchars.length)

&&(tempchars[tempchars.length- 1]!='\r')){

for(int i= 0; i< charread; i++){

if(tempchars[i]=='\r'){

System.out.print(tempchars[i]);

*以行为单位读取文件,常用于读面向行的格式化文件

public static void readFileByLines(String fileName){

File file= new File(fileName);

System.out.println("以行为单位读取文件内容,一次读一整行:");

reader= new BufferedReader(new FileReader(file));

//一次读入一行,直到读入null为文件结束

while((tempString= reader.readLine())!= null){

System.out.println("line"+ line+":"+ tempString);

public static void readFileByRandomAccess(String fileName){

RandomAccessFile randomFile= null;

System.out.println("随机读取一段文件内容:");

//打开一个随机访问文件流,按只读方式

randomFile= new RandomAccessFile(fileName,"r");

long fileLength= randomFile.length();

int beginIndex=(fileLength> 4)? 4: 0;

//将读文件的开始位置移到beginIndex位置。

//一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。

//将一次读取的字节数赋给byteread

while((byteread= randomFile.read(bytes))!=-1){

System.out.write(bytes, 0, byteread);

private static void showAvailableBytes(InputStream in){

System.out.println("当前字节输入流中的字节数为:"+ in.available());

public static void main(String[] args){

String fileName="C:/temp/newTemp.txt";

ReadFromFile.readFileByBytes(fileName);

ReadFromFile.readFileByChars(fileName);

ReadFromFile.readFileByLines(fileName);

ReadFromFile.readFileByRandomAccess(fileName);

* A方法追加文件:使用RandomAccessFile

public static void appendMethodA(String fileName, String content){

//打开一个随机访问文件流,按读写方式

RandomAccessFile randomFile= new RandomAccessFile(fileName,"rw");

long fileLength= randomFile.length();

randomFile.writeBytes(content);

* B方法追加文件:使用FileWriter

public static void appendMethodB(String fileName, String content){

//打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件

FileWriter writer= new FileWriter(fileName, true);

public static void main(String[] args){

String fileName="C:/temp/newTemp.txt";

AppendToFile.appendMethodA(fileName, content);

AppendToFile.appendMethodA(fileName,"append end.\n");

ReadFromFile.readFileByLines(fileName);

AppendToFile.appendMethodB(fileName, content);

AppendToFile.appendMethodB(fileName,"append end.\n");

ReadFromFile.readFileByLines(fileName);

二、java File的三种创建文件夹方法(绝对路径方式)

Java的File类提供了三种创建文件夹的方法:createNewFile()用于创建新文件,mkdir()用于创建单个目录,mkdirs()则可以创建包括所有必需父目录的多级目录。以下是具体的应用示例:

在Java中,File类提供了三种创建文件夹的实用功能:

1. createNewFile()方法:当指定的文件不存在时,会创建一个新的空文件。例如,在D:\Java_study\FilePathTest目录下创建名为java.txt的文件:

File file= new File("D:\\Java_study\\FilePathTest\\java.txt");

boolean created= file.createNewFile();

System.out.println("在D:\\Java_study\\FilePathTest目录下创建了一个java.txt文件");

2. mkdir()方法:用于创建单个目录。在D:\Java_study\FilePathTest创建名为javaFile的子目录:

File folder= new File("D:\\Java_study\\FilePathTest\\javaFile");

boolean created= folder.mkdir();

System.out.println("在D:\\Java_study\\FilePathTest目录下创建了文件夹目录 javaFile");

3. mkdirs()方法:创建多级目录,包括所有必需的父目录。如在D:\Java_study\FilePathTest下创建多级目录javaTest\javaFile:

File multiLevelFolder= new File("D:\\Java_study\\FilePathTest\\javaTest\\javaFile");

if(!multiLevelFolder.exists()){

boolean created= multiLevelFolder.mkdirs();

System.out.println("在D:\\Java_study\\FilePathTest目录下创建了多级目录 javaTest\\javaFile");

通过这些方法,开发者可以根据需要灵活地在Java环境中创建和管理文件和目录。

三、java 实现ftp上传如何创建文件夹

1、这个功能我也刚写完,不过我也是得益于同行,现在我也把自己的分享给大家,希望能对大家有所帮助,因为自己的项目不涉及到创建文件夹,也仅作分享,不喜勿喷谢谢!

2、packagecom.sunline.bank.ftputil;

3、importjava.io.BufferedInputStream;

4、importjava.io.BufferedOutputStream;

5、importorg.apache.commons.net.ftp.FTPClient;

6、 publicFTPClientloginFtp(Stringhostname,Integerport,Stringusername,Stringpassword);

7、 publicbooleanuploadLocalFilesToFtp(Stringhostname,Integerport,Stringusername,Stringpassword,Stringfpath,Stringlocalpath,StringfileName);

8、*@paramfilenames需要修改成的文件名

9、 publicbooleandownloadFileList(Stringhostname,Integerport,Stringusername,Stringpassword,Stringfpath,Stringlocalpath,StringfileName,Stringfilenames);

10、*@paramfilenames需要修改的文件名

11、 publicvoidmodifiedLocalFileName(Stringlocalpath,StringfileName,Stringfilenames);

12、 publicvoidcloseFtpConnection(FTPClientftpClient,BufferedOutputStreambufferRead,BufferedInputStreambuffer);

13、packagecom.sunline.bank.ftputil;

14、importjava.io.BufferedInputStream;

15、importjava.io.BufferedOutputStream;

16、importjava.io.FileInputStream;

17、importjava.io.FileOutputStream;

18、importorg.apache.commons.net.ftp.FTPClient;

19、importorg.apache.commons.net.ftp.FTPFile;

20、importorg.apache.commons.net.ftp.FTPReply;

21、publicclassFtpUtilsImplimplementsIFtpUtils{

22、 privatestaticLoggerlog=Logger.getLogger(FtpUtilsImpl.class);

23、 publicFTPClientloginFtp(Stringhostname,Integerport,Stringusername,Stringpassword){

24、 ftpClient.connect(hostname,port);

25、 ftpClient.login(username,password);

26、 ftpClient.setControlEncoding("utf-8");

27、 reply=ftpClient.getReplyCode();

28、 ftpClient.setDataTimeout(60000);

29、 ftpClient.setConnectTimeout(60000);

30、//设置文件类型为二进制(避免解压缩文件失败)

31、 ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);

32、//开通数据端口传输数据,避免阻塞

33、 ftpClient.enterLocalActiveMode();

34、 if(!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())){

35、 log.error("连接FTP失败,用户名或密码错误");

36、 if(!FTPReply.isPositiveCompletion(reply)){

37、 log.error("登录FTP失败,请检查FTP相关配置信息是否正确",e1);

38、 publicbooleanuploadLocalFilesToFtp(Stringhostname,Integerport,Stringusername,Stringpassword,Stringfpath,Stringlocalpath,StringfileName){

39、 ftpClient=loginFtp(hostname,port,username,password);

40、 BufferedInputStreambuffer=null;

41、 buffer=newBufferedInputStream(newFileInputStream(localpath+fileName));

42、 ftpClient.changeWorkingDirectory(fpath);

43、 fileName=newString(fileName.getBytes("utf-8"),ftpClient.DEFAULT_CONTROL_ENCODING);

44、 if(!ftpClient.storeFile(fileName,buffer)){

45、 closeFtpConnection(ftpClient,null,buffer);

46、 publicbooleandownloadFileList(Stringhostname,Integerport,Stringusername,Stringpassword,Stringfpath,Stringlocalpath,StringfileName,Stringfilenames){

47、 ftpClient=loginFtp(hostname,port,username,password);

48、BufferedOutputStreambufferRead=null;

49、 if(fpath.startsWith("/")&&fpath.endsWith("/")){

50、 this.ftpClient.changeWorkingDirectory(fpath);

51、 this.ftpClient.enterLocalActiveMode();

52、 FTPFile[]ftpFiles=this.ftpClient.listFiles();

53、 System.out.println("=================="+files.getName());

54、 FilelocalFile=newFile(localpath+"/"+files.getName());

55、 bufferRead=newBufferedOutputStream(newFileOutputStream(localFile));

56、 ftpClient.retrieveFile(files.getName(),bufferRead);

57、 closeFtpConnection(ftpClient,bufferRead,null);

58、 modifiedLocalFileName(localpath,fileName,filenames);

59、 publicvoidmodifiedLocalFileName(Stringlocalpath,StringfileName,Stringfilenames){

60、 File[]fileList=file.listFiles();

61、 if(null==fileList||fileList.length==0){

62、 Stringorprefix=data.getName().substring(0,data.getName().lastIndexOf("."));

63、 Stringprefix=fileName.substring(0,fileName.lastIndexOf("."));

64、 System.out.println("index==="+orprefix+"prefix==="+prefix);

65、 if(orprefix.contains(prefix)){

66、 booleanf=data.renameTo(newFile(localpath+"/"+filenames));

67、 System.out.println("f============="+f);

68、 log.error("需要重命名的文件不存在,请检查。。。");

69、 publicvoidcloseFtpConnection(FTPClientftpClient,BufferedOutputStreambufferRead,BufferedInputStreambuffer){

70、 publicstaticvoidmain(String[]args)throwsIOException{

71、 Stringhostname="xx.xxx.x.xxx";

72、 Stringfpath="/etl/etldata/back/";

73、 StringlocalPath="C:/Users/Administrator/Desktop/ftp下载/";

74、 FtpUtilsImplftp=newFtpUtilsImpl();

75、/*ftp.modifiedLocalFileName(localPath,fileName,filenames);*/

76、 ftp.downloadFileList(hostname,port,username,password,fpath,localPath,fileName,filenames);

77、/*ftp.uploadLocalFilesToFtp(hostname,port,username,password,fpath,localPath,fileName);*/

78、/*ftp.modifiedLocalFileName(localPath);*/