Java IO 问题 创建一个新文件夹。 并且写入一个文件
发布时间:2025-05-21 04:39:11 发布人:远客网络
一、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);*/