File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Java in General and the fly likes Java program that changes a file's extension Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Java in General
Bookmark "Java program that changes a file Watch "Java program that changes a file New topic

Java program that changes a file's extension

Sridhar Venkataraman
Ranch Hand

Joined: May 22, 2006
Posts: 76
I want to write a java program that when executed can take a file or a certain format (say .txt) and give as output the same file, but with the extension changed (say .xml).

How do I go about accomplishing this? Thank you.
Ulf Dittmer

Joined: Mar 22, 2005
Posts: 42965
The name of a file -including its extension- can be changed by the method.

Your example is strange, though - an .xml extension implies that the file is valid XML, which wouldn't be the case for just any old .txt file. (Changing the file extension does not change the file type or file contents.)
Sridhar Venkataraman
Ranch Hand

Joined: May 22, 2006
Posts: 76
My example was hypothetical. I actually have the extension .mm (a FreeMind mindmap file), which is valid XML all the time. So I just want to change the file extension for another program to read and parse the XML contained in the file.

Bob Ruth
Ranch Hand

Joined: Jun 04, 2007
Posts: 320
split() can be your friend.

SCJP - 86% - June 11, 2009
Sridhar Venkataraman
Ranch Hand

Joined: May 22, 2006
Posts: 76
I will attempt to implement it and get back if I have any problems. Thank you.
K Sathya Narayanan

Joined: Feb 15, 2007
Posts: 28

The above program changes the extension of *.txt to *.xml. if ext file is not found , then it creates a file in that name and renames its extension to xml. files with other extension are not renamed or created.
Rob Spoor

Joined: Oct 27, 2005
Posts: 20275

That code is error prone.

First of all, what if there is no extension? indexOf will return -1, which will cause an IndexOutOfBoundsException. Secondly, what if there are multiple dots in the full filename? lastIndexOf will solve that.

And what if the filename contains the extension twice?

Your code, slightly modified:

[ May 28, 2008: Message edited by: Rob Prime ]

How To Ask Questions How To Answer Questions
Anthony Mag

Joined: Nov 27, 2008
Posts: 14
import java.util.StringTokenizer;

/*Change the extension name of the file recursively
for multiple directories
public class renFile {
static String reName ="";
static StringTokenizer str =null;
static File files[] =null;
static final String ext = ".doc";//Extension to Change to
public void Innundo(String path){
String t;
try {
File file = new File(path);
files = file.listFiles();
for(File fl : files){
System.out.println("Directory name:"+fl.toString());

}else {
System.out.println("File name:"+fl.toString());
t = fl.getName();
str = new StringTokenizer(t,".");
t= str.nextToken();
t= fl.getParent()+"\\"+t+ext;
System.out.println("Changed Name "+t);
fl.renameTo(new File(t));
else {System.out.println(fl.getName()+" Not A File! ");}
}catch(Exception e){

public static void main(String[] args) {
String path="C:/Path_To_Directory";
renFile re = new renFile();
//Internet Resources
Campbell Ritchie

Joined: Oct 13, 2005
Posts: 46375
Anthony Gomes, don't forget the "Code" button, otherwise your code becomes illegible. Please go back and use the edit button to add code tags.
I agree. Here's the link:
subject: Java program that changes a file's extension
It's not a secret anymore!