কোনও পাথ কোনও ফাইল বা ফোল্ডার উপস্থাপন করে কিনা তা পরীক্ষা করুন


141

Stringফাইল বা ডিরেক্টরিতে কোনও পথ দেখায় কিনা তা পরীক্ষা করার জন্য আমার একটি বৈধ পদ্ধতি দরকার । অ্যান্ড্রয়েডে বৈধ ডিরেক্টরি নাম কি? এটি বের হওয়ার সাথে সাথে ফোল্ডারের নামগুলি '.'অক্ষর ধারণ করতে পারে , সুতরাং ফাইল বা ফোল্ডার আছে কিনা তা সিস্টেম কীভাবে বোঝে?


2
"ফাইল ফাইল বা ফোল্ডার আছে কি না তা সিস্টেম কীভাবে বুঝতে পারে": সিস্টেম কীভাবে বুঝতে পারে না ? এটি ফাইল সিস্টেমে ডিস্কে রয়েছে এবং এটি এক বা অন্যটি।
লার্নের মারকুইস

উত্তর:


203

ধরে pathনেওয়া আপনার String

File file = new File(path);

boolean exists =      file.exists();      // Check if the file exists
boolean isDirectory = file.isDirectory(); // Check if it's a directory
boolean isFile =      file.isFile();      // Check if it's a regular file

জাভাদোক দেখুনFile


অথবা আপনি এনআইও ক্লাস ব্যবহার করতে পারেন Filesএবং এই জাতীয় জিনিস পরীক্ষা করতে পারেন :

Path file = new File(path).toPath();

boolean exists =      Files.exists(file);        // Check if the file exists
boolean isDirectory = Files.isDirectory(file);   // Check if it's a directory
boolean isFile =      Files.isRegularFile(file); // Check if it's a regular file

আমি আমার প্রশ্নে যেমন উল্লেখ করেছি, আমার কাছে কেবল স্ট্রিং রয়েছে এবং কোনও ফাইলের উদাহরণ নেই এবং আমি সেগুলি তৈরি করতে পারি না।
ডিম

1
pathআমার উদাহরণে String। কেন আপনি Fileউদাহরণ তৈরি করতে পারবেন না ? দ্রষ্টব্য যে এটি ফাইল সিস্টেমে কোনও পরিবর্তন করবে না।
বাজ

এখানে একটি কংক্রিটের উদাহরণ, আমি নিম্নলিখিত পথটি ব্যবহার করে একটি ফাইল তৈরি করার চেষ্টা করছি: / mnt / sdcard / arc / root, এবং isDirectory () এর জন্য এটি মিথ্যা প্রত্যাবর্তন করে। এখানে সমস্যা কি?
ডিম

@ এগারটি বেশ শক্তভাবে বলা শক্ত যেহেতু আমার কাছে অ্যান্ড্রয়েড ডিভাইস নেই। নোট করুন যে rootএকটি ফাইল হতে পারে। অগত্যা ফাইলগুলির একটি .somethingএক্সটেনশন নেই।
বাজ

10
isDirectory () পদ্ধতিটি কেবলমাত্র যদি ফাইলটি বিদ্যমান থাকে এবং এটি কোনও ডিরেক্টরি থাকে তবে তা সত্য হবে। যদি পথে প্রদত্ত ফাইলটি উপস্থিত না থাকে তবে এটিও মিথ্যা ফিরে আসে। সুতরাং এটি ডিরেক্টরী () মিথ্যা প্রত্যাবর্তন করবে যদি প্রদত্ত পথটি উপস্থিত না থাকে বা এটি উপস্থিত থাকে তবে এটি কোনও ডিরেক্টরি নয় ... আশা করি এটি সহায়তা করে ..
প্রফুল ভাটনগর

50

নিও এপিআইয়ের সাথে থাকার সময় পরিষ্কার সমাধান:

Files.isDirectory(path)
Files.isRegularFile(path)

আপনি ডিরেক্টরিগুলির একটি তালিকাতে লুপ করছেন তবে এটি আরও ভাল উত্তর। এখানে Fileপ্রতিবার নতুন অবজেক্ট তৈরি করার পরিবর্তে আপনি এই চেকগুলি চালানোর জন্য একটি স্ট্যাটিক ক্লাস ব্যবহার করছেন । মেমরি সংরক্ষণ করে
Kervvv

2
জিজ্ঞাসিত প্রশ্নের উত্তর দেয় না। ফাইলস.আইসডাইরেক্টরি () স্ট্রিং গ্রহণ করে না।
gerardw

21

এই চেকগুলি সম্পাদন করতে দয়া করে নিও API এ আটকে দিন

import java.nio.file.*;

static Boolean isDir(Path path) {
  if (path == null || !Files.exists(path)) return false;
  else return Files.isDirectory(path);
}

2
প্রশ্ন যখন জাভা কোডের জন্য জিজ্ঞাসা করছে তখন কেন স্কালায় একটি উত্তর দেবে (ট্যাগগুলি দেখুন)?
বাজ

6
@ বাজ কারণ স্কালা জাভা থেকে সমবায় ... ঠিক মজা করছে :- ডি। আমি উত্তর আপডেট করেছি।
শেং

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


3

কোন উপায় সিস্টেম আপনাকে বলতে যদি একটি নেই Stringএকটি প্রতিনিধিত্ব fileবা directory, যদি অস্তিত্ব নেই ফাইল সিস্টেম। উদাহরণ স্বরূপ:

Path path = Paths.get("/some/path/to/dir");
System.out.println(Files.isDirectory(path)); // return false
System.out.println(Files.isRegularFile(path)); // return false

এবং নিম্নলিখিত উদাহরণের জন্য:

Path path = Paths.get("/some/path/to/dir/file.txt");
System.out.println(Files.isDirectory(path));  //return false
System.out.println(Files.isRegularFile(path));  // return false

সুতরাং আমরা দেখতে পাই যে উভয় ক্ষেত্রেই সিস্টেমটি মিথ্যা প্রত্যাবর্তন করে। এই উভয় জন্য সত্য java.io.Fileএবংjava.nio.file.Path


2

স্ট্রিংটি কোনও পথ বা কোনও ফাইলকে প্রোগ্রামক্রমে উপস্থাপন করে কিনা তা পরীক্ষা করতে আপনার এপিআই পদ্ধতি যেমন ব্যবহার করা উচিত isFile(), isDirectory().

ফাইল বা ফোল্ডার আছে কিনা তা সিস্টেম কীভাবে বুঝতে পারে?

আমার ধারণা, ফাইল এবং ফোল্ডার এন্ট্রিগুলি একটি ডেটা স্ট্রাকচারে রাখা হয় এবং এটি ফাইল সিস্টেম দ্বারা পরিচালিত হয়।



0
public static boolean isDirectory(String path) {
    return path !=null && new File(path).isDirectory();
}

সরাসরি প্রশ্নের উত্তর দিতে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.