জাভা ব্যবহার করে একটি ফাইলের নাম পরিবর্তন করুন


174

আমরা একটি ফাইল বলে নাম পরিবর্তন করতে পারেন test.txtকরতে test1.txt?

যদি test1.txtবিদ্যমান থাকে তবে কি এটির নাম পরিবর্তন হবে?

আমি কীভাবে এটি এর আগে থেকেই বিদ্যমান টেস্ট 1.txt ফাইলটির পুনরায় নামকরণ করব যাতে পরীক্ষার জন্য নতুন টেক্সটটিএসটি পরবর্তী ব্যবহারের জন্য যুক্ত করা হয়?


6
আপনার শেষ অনুচ্ছেদে কোনও পুনর্নবীকরণের ক্রিয়াকলাপ বর্ণনা করা যায় না। এটি একটি সংযোজন অপারেশন বর্ণনা করে।
মারকুইস অফ লর্ন

উত্তর:


173

Http://exampledepot.8waytrips.com/egs/java.io/RenameFile.html থেকে অনুলিপি করা হয়েছে

// File (or directory) with old name
File file = new File("oldname");

// File (or directory) with new name
File file2 = new File("newname");

if (file2.exists())
   throw new java.io.IOException("file exists");

// Rename file (or directory)
boolean success = file.renameTo(file2);

if (!success) {
   // File was not successfully renamed
}

নতুন ফাইলে সংযুক্ত করতে:

java.io.FileWriter out= new java.io.FileWriter(file2, true /*append=yes*/);

24
এই কোডটি সমস্ত ক্ষেত্রে বা প্ল্যাটফর্মগুলিতে কাজ করবে না। পদ্ধতির পুনরায় নামকরণ নির্ভরযোগ্য নয়: স্ট্যাকওভারফ্লো.com
স্টিফেন গ্রেনিয়ার

শুধুমাত্র Pathউপায় আমার পক্ষে কাজ করছে, renameToসর্বদা মিথ্যা প্রত্যাবর্তন করে। পারেন চেক করুন kr37 উত্তর বা এই উত্তর
andras

107

সংক্ষেপে:

Files.move(source, source.resolveSibling("newname"));

আরো বিস্তারিত:

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

নিম্নলিখিত থেকে সরাসরি অনুলিপি করা হয় http://docs.oracle.com/javase/7/docs/api/index.html :

ধরুন আমরা ফাইলটিকে একই ডিরেক্টরিতে রেখে "নতুন নাম" করে একটি ফাইলের নাম পরিবর্তন করতে চাই:

Path source = Paths.get("path/here");
Files.move(source, source.resolveSibling("newname"));

বিকল্প হিসাবে, ধরুন আমরা কোনও ফাইলকে নতুন ডিরেক্টরিতে স্থানান্তরিত করতে চাইছি, একই ফাইলটির নাম রেখেছি এবং ডিরেক্টরিতে সেই নামের যে কোনও বিদ্যমান ফাইলটি প্রতিস্থাপন করতে চাই:

Path source = Paths.get("from/path");
Path newdir = Paths.get("to/path");
Files.move(source, newdir.resolve(source.getFileName()), REPLACE_EXISTING);

1
পাথ হ'ল একটি ইন্টারফেস যাঁর একমাত্র বাস্তবায়নগুলি হ'ল উইন্ডোজপথ, জিপপথ এবং অ্যাবস্ট্রাকপথ। মাল্টি-প্ল্যাটফর্ম বাস্তবায়নের জন্য এটি কি সমস্যা হবে?
Caelum

1
হাই @ user2104648, এখানে ( টিউটোরিয়ালস.জেনকোভ.কম / জাভা- নিও / পাথ.চ.টি.এম.এল ) আপনি কীভাবে লিনাক্স পরিবেশে ফাইলগুলি পরিচালনা করতে পারবেন সে সম্পর্কে একটি উদাহরণ। মূলত, আপনার উল্লিখিত একটি বাস্তবায়ন ব্যবহার করার পরিবর্তে আপনার java.nio.file.Paths.get (কিছু প্যাথ) ব্যবহার করা দরকার
ম্যাক্সভিস

2
পথের উত্স = কী?
Koray Tugay

@ কেআর 37 ত্রুটিহীন উত্তর!
গৌরব

30

আপনি কোনও ফাইল অবজেক্টে পুনরায় নামকরণের পদ্ধতিটি ব্যবহার করতে চান ।

প্রথমে গন্তব্য উপস্থাপন করতে একটি ফাইল অবজেক্ট তৈরি করুন। এই ফাইলটি বিদ্যমান কিনা তা পরীক্ষা করে দেখুন। যদি এটি বিদ্যমান না থাকে তবে ফাইলটি সরানোর জন্য একটি নতুন ফাইল অবজেক্ট তৈরি করুন। সরানোর জন্য ফাইলটিতে পুনর্নবীকরণ পদ্ধতিতে কল করুন এবং কলটি সফল হয়েছে কিনা তা দেখতে পুনর্নামনামো থেকে প্রত্যাবর্তিত মানটি পরীক্ষা করুন।

আপনি যদি একটি ফাইলের বিষয়বস্তু অন্যটিতে যুক্ত করতে চান তবে প্রচুর লেখক উপলব্ধ। এক্সটেনশনের উপর ভিত্তি করে, এটি এটিকে সরল পাঠ্যের মতো মনে হচ্ছে, তাই আমি ফাইল রাইটারের দিকে নজর দেব


9
কোনও ধারণা নেই, তবে সোর্স কোড ছাড়াই পিয়েরি পোস্টটি হুবহু একই জিনিস ...
টমাস ওয়ানস

28

জাভা 1.6 এবং নিম্নের জন্য, আমি বিশ্বাস করি এটির জন্য সবচেয়ে নিরাপদ এবং পরিষ্কারতম API হ'ল পেয়ারা এর ফাইলস.মোভ

উদাহরণ:

File newFile = new File(oldFile.getParent(), "new-file-name.txt");
Files.move(oldFile.toPath(), newFile.toPath());

প্রথম লাইনটি নিশ্চিত করে যে নতুন ফাইলটির অবস্থান একই ডিরেক্টরি, অর্থাৎ পুরানো ফাইলের পিতামহিত ডিরেক্টরি

সম্পাদনা: আমি জাভা 7 ব্যবহার করা শুরু করার আগে এটি লিখেছিলাম, যা খুব অনুরূপ পদ্ধতির পরিচয় দিয়েছিল। সুতরাং আপনি যদি জাভা 7+ ব্যবহার করেন তবে আপনার ক্রিয়াকলাপের উত্তরটি দেখতে হবে এবং এটির উপরে নজর দেওয়া উচিত।


18

ফাইলটিকে নতুন নামে সরিয়ে নামকরণ করা হচ্ছে। (ফাইল ইউটিগুলি অ্যাপাচি কমন্স আইও লাইব থেকে এসেছে)

  String newFilePath = oldFile.getAbsolutePath().replace(oldFile.getName(), "") + newName;
  File newFile = new File(newFilePath);

  try {
    FileUtils.moveFile(oldFile, newFile);
  } catch (IOException e) {
    e.printStackTrace();
  }

13

ফাইলটির নাম পরিবর্তন করার এটি সহজ উপায়:

        File oldfile =new File("test.txt");
        File newfile =new File("test1.txt");

        if(oldfile.renameTo(newfile)){
            System.out.println("File renamed");
        }else{
            System.out.println("Sorry! the file can't be renamed");
        }

5
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import static java.nio.file.StandardCopyOption.*;

Path yourFile = Paths.get("path_to_your_file\text.txt");

Files.move(yourFile, yourFile.resolveSibling("text1.txt"));

"Text1.txt" নামের সাথে একটি বিদ্যমান ফাইল প্রতিস্থাপন করতে:

Files.move(yourFile, yourFile.resolveSibling("text1.txt"),REPLACE_EXISTING);

5

এটা চেষ্টা কর

File file=new File("Your File");
boolean renameResult = file.renameTo(new File("New Name"));
// todo: check renameResult

দ্রষ্টব্য: আমাদের পুনরায় নামকরণ ফাইলটি সফল হয়েছে তা নিশ্চিত করার জন্য আমাদের পুনর্নবীকরণের ফেরতের মানটি পরীক্ষা করা উচিত কারণ এটি প্ল্যাটফর্ম নির্ভর (ভিন্ন অপারেটিং সিস্টেম, বিভিন্ন ফাইল সিস্টেম) এবং পুনরায় নাম ব্যর্থ হলে এটি আইও ব্যতিক্রম ছুঁড়ে না।


9 বছর আগে পিয়েরের দেওয়া স্বীকৃত উত্তর থেকে এটি কীভাবে আলাদা?
ফোরেজ

4

হ্যাঁ, আপনি File.renameTo () ব্যবহার করতে পারেন। তবে মনে রাখবেন একটি নতুন ফাইলের নামকরণের সময় সঠিক পাথ রয়েছে।

import java.util.Arrays;
import java.util.List;

public class FileRenameUtility {
public static void main(String[] a) {
    System.out.println("FileRenameUtility");
    FileRenameUtility renameUtility = new FileRenameUtility();
    renameUtility.fileRename("c:/Temp");
}

private void fileRename(String folder){
    File file = new File(folder);
    System.out.println("Reading this "+file.toString());
    if(file.isDirectory()){
        File[] files = file.listFiles();
        List<File> filelist = Arrays.asList(files);
        filelist.forEach(f->{
           if(!f.isDirectory() && f.getName().startsWith("Old")){
               System.out.println(f.getAbsolutePath());
               String newName = f.getAbsolutePath().replace("Old","New");
               boolean isRenamed = f.renameTo(new File(newName));
               if(isRenamed)
                   System.out.println(String.format("Renamed this file %s to  %s",f.getName(),newName));
               else
                   System.out.println(String.format("%s file is not renamed to %s",f.getName(),newName));
           }
        });

    }
}

}


3

যদি এটি কেবল ফাইলটির নাম পরিবর্তন করে থাকে তবে আপনি ফাইল.রনেমটো () ব্যবহার করতে পারেন

যে ক্ষেত্রে আপনি প্রথমটিতে দ্বিতীয় ফাইলের বিষয়বস্তু সংযোজন করতে চান সেই ক্ষেত্রে, অ্যাপেন্ড কনস্ট্রাক্টর বিকল্প বা ফাইল রাইটারের জন্য একই জিনিসটি দিয়ে ফাইলআউটপুট স্ট্রিমটি দেখুন । আউটপুট স্ট্রিম / লেখক ব্যবহার করে আপনাকে ফাইলের বিষয়বস্তু যুক্ত করতে এবং লিখতে হবে।


2

আমি যতদূর জানি, কোনও ফাইলের নাম পরিবর্তন করে এটির বিদ্যমান বিষয়বস্তুগুলিকে লক্ষ্য নামের সাথে যুক্ত করা যাবে না।

জাভাতে কোনও ফাইলের নাম পরিবর্তন সম্পর্কে ক্লাসে পদ্ধতিটির জন্য ডকুমেন্টেশন দেখুন ।renameTo()File


1
Files.move(file.toPath(), fileNew.toPath()); 

কাজ, কিন্তু শুধুমাত্র আপনি ঘনিষ্ঠ (অথবা autoclose) সব ব্যবহৃত সম্পদ (যখন InputStream, FileOutputStreamইত্যাদি) সঙ্গে আমি একই পরিস্থিতি মনে file.renameToবা FileUtils.moveFile


1

ফোল্ডারে সাফল্যের সাথে একাধিক ফাইলের নামকরণের জন্য আমার কোডটি এখানে রয়েছে:

public static void renameAllFilesInFolder(String folderPath, String newName, String extension) {
    if(newName == null || newName.equals("")) {
        System.out.println("New name cannot be null or empty");
        return;
    }
    if(extension == null || extension.equals("")) {
        System.out.println("Extension cannot be null or empty");
        return;
    }

    File dir = new File(folderPath);

    int i = 1;
    if (dir.isDirectory()) { // make sure it's a directory
        for (final File f : dir.listFiles()) {
            try {
                File newfile = new File(folderPath + "\\" + newName + "_" + i + "." + extension);

                if(f.renameTo(newfile)){
                    System.out.println("Rename succesful: " + newName + "_" + i + "." + extension);
                } else {
                    System.out.println("Rename failed");
                }
                i++;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

}

এবং এটি উদাহরণ হিসাবে চালান:

renameAllFilesInFolder("E:\\Downloads\\Foldername", "my_avatar", "gif");

-2

চলমান কোড এখানে।

private static void renameFile(File fileName) {

    FileOutputStream fileOutputStream =null;

    BufferedReader br = null;
    FileReader fr = null;

    String newFileName = "yourNewFileName"

    try {
        fileOutputStream = new FileOutputStream(newFileName);

        fr = new FileReader(fileName);
        br = new BufferedReader(fr);

        String sCurrentLine;

        while ((sCurrentLine = br.readLine()) != null) {
            fileOutputStream.write(("\n"+sCurrentLine).getBytes());
        }

        fileOutputStream.flush();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            fileOutputStream.close();
            if (br != null)
                br.close();

            if (fr != null)
                fr.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

2
সাধারণত বেনাম কোডের কয়েকটি সারি পোস্ট করার পরিবর্তে কোনও সমাধান ব্যাখ্যা করা ভাল। আপনি কীভাবে আমি একটি ভাল উত্তর লিখতে পারি এবং সম্পূর্ণ কোড-ভিত্তিক উত্তরগুলিও ব্যাখ্যা
আন ফাম

অনুলিপি এবং পুনর্নামকরণ সাধারণত বিভিন্ন অপারেশন হয় তাই আমি মনে করি এটি স্পষ্টভাবে চিহ্নিত করা উচিত যে এটি একটি অনুলিপি। এটি অপ্রয়োজনীয় ধীর হওয়ার কারণ এটি বাইটগুলি না করে অক্ষরগুলি অনুলিপি করে।
জোয়েল ক্লিংহেড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.