System.getProperty ("java.io.tmpdir") কখন "c: \ অস্থায়ী" ফিরে আসে?


110

কখন কবে System.getProperty("java.io.tmpdir")ফিরে আসবে তা জানতে আগ্রহী "c:\temp"Java.io.File জাভা ডক্স অনুসারে -

ডিফল্ট অস্থায়ী-ফাইল ডিরেক্টরি সিস্টেম সম্পত্তি java.io.tmpdir দ্বারা সুনির্দিষ্ট করা হয়। ইউনিক্স সিস্টেমগুলিতে এই সম্পত্তিটির ডিফল্ট মান সাধারণত "/ tmp" বা "/ var / tmp" হয়; মাইক্রোসফ্ট উইন্ডোজ সিস্টেমে এটি সাধারণত "সি: টেম্পে" থাকে। জাভা ভার্চুয়াল মেশিনটি চালু করা হলে এই সিস্টেমের সম্পত্তিটিতে একটি আলাদা মান দেওয়া যেতে পারে, তবে এই সম্পত্তিটিতে অস্থায়ী ডিরেক্টরিতে ব্যবহৃত অস্থায়ী ডিরেক্টরিতে কোনও প্রভাব থাকার গ্যারান্টিযুক্ত এই সম্পত্তিতে প্রোগ্রামেটিক পরিবর্তনগুলি নেই।

তবে আমার ক্ষেত্রে-

System.out.println(System.getProperty("java.io.tmpdir"));

সর্বদা ফিরে আসে-

C:\Users\admin\AppData\Local\Temp\ i.e. %TEMP%

এটি কোন পরিস্থিতিতে ফিরে আসবে "c:\temp"?

সম্পাদনা: আমি যদি% TEMP% কে C: \ টেম্পে পরিবর্তন করি তবে আমি সি: \ টেম্পের অধিকার পাব? তবে ডকুমেন্টেশন সি: \ টেম্পের পরিবর্তে গ: \ টেম্পিকে দেখায়।


4
উইকিপিডিয়া. org / উইকি / সাম্প্রতিক_ফোল্ডার উইকির দিকে তাকিয়ে, আমি বলতে চাই যে আপনি এটি C:\Temp% TEMP% পরিবর্তন করে, উইন্ডোজ 98 ইনস্টল করে বা এটিকে পাস করার মাধ্যমে করতে পারেন java -Djava.io.tmpdir=C:\Temp। : এছাড়াও চেক আউট এই stackoverflow.com/questions/3437095/...
bezmax

ম্যাক্স ধন্যবাদ ম্যাক্স আমি যদি% TEMP% এ পরিবর্তন করি C:\Tempতবে আমি পাব C:\Temp। রাইট? c:\Tempপরিবর্তে ডক শো C:\Temp। :)
আশীষ পাঁচোলি 3'13

2
আমি জানি না কেন ড্রাইভ লেটার আপনার আবেদনের সাথে গুরুত্বপূর্ণ?
আজডুকে

@ আশিষ পানচোলি আপনাকে সেখানে পেলেন না?
আজদুকে

আপনি যে লিঙ্কটি করছেন তার 1.4.2 জাভাদোক পুরানো। বর্তমান 7 জাভাদোক এর একটি "সাধারণ" ডিরেক্টরি উল্লেখ করেছেন "C:\\WINNT\\TEMP"
আব্দুল

উত্তর:


128

এমএস উইন্ডোতে অস্থায়ী ডিরেক্টরিটি পরিবেশ পরিবর্তনশীল দ্বারা সেট করা হয় TEMP। এক্সপিতে অস্থায়ী ডিরেক্টরিটি প্রতি ব্যবহারকারীকে স্থানীয় সেটিংস। টেম্প হিসাবে সেট করা হয়েছিল।

আপনি যদি আপনার টিইএমপি পরিবেশের পরিবর্তনশীলকে এতে পরিবর্তন করেন C:\tempতবে চালানোর সময় আপনি একই পাবেন:

System.out.println(System.getProperty("java.io.tmpdir"));


2
উইন্ডোজে% TMP% নামে একটি দ্বিতীয় পরিবেশ পরিবর্তনশীল রয়েছে এবং এটি এটি কখনও কখনও% TEMP% নয় ব্যবহৃত হয়, উদাহরণস্বরূপ Eclipse এর জন্য GWT প্লাগইন% TMP% ভেরিয়েবল ব্যবহার করে।
উই শিটল্যান্ড

@ জোশি: আপনার উত্তরটি বেশ নির্ভুল। যাইহোক, আপনি যে উদাহরণ দিয়েছেন তার সাথে আমি একমত নই: ব্যবহারকারী যদি TMPএনভির ভার সেট করে থাকেন তবে TEMPতা উপেক্ষা করা হবে। দয়া করে আমার উত্তরটি উল্লেখ করুন এবং আমার অর্থ আপনি কী বোঝেন নি তা যদি আমাকে জানায়।
জাকারিয়া


33

একদিকে, আপনি যখন System.getProperty("java.io.tmpdir")নির্দেশিকা কল করেন, তখন জাভা উইন 32 এপিআই-এর ফাংশনটি কল করে GetTempPathএমএসডিএন অনুসারে :

GetTempPath ফাংশন নিম্নলিখিত ক্রমে পরিবেশের ভেরিয়েবলের অস্তিত্বের জন্য পরীক্ষা করে এবং পাওয়া প্রথম পাথটি ব্যবহার করে:

  1. টিএমপি পরিবেশ পরিবর্তনশীল দ্বারা নির্দিষ্ট পথ।
  2. টিএমপ এনভায়রনমেন্ট ভেরিয়েবল দ্বারা নির্দিষ্ট পথ
  3. USERPROFILE পরিবেশ পরিবর্তনশীল দ্বারা নির্দিষ্ট করা পথ।
  4. উইন্ডোজ ডিরেক্টরি।

অন্যদিকে, দয়া করে কেন TMPএবং TEMPসহাবস্থান রয়েছে তার historical তিহাসিক কারণগুলি পরীক্ষা করুন । এটা সত্যিই পড়া মূল্যবান।


0

মূল্য %TEMP%এনভায়রনমেন্ট ভেরিয়েবল প্রায়ই ব্যবহারকারী-সুনির্দিষ্ট এবং Windows সেগুলি বর্তমানে ব্যবহারকারীর অ্যাকাউন্ট লগ ইন সংক্রান্ত। কিছু ব্যবহারকারী অ্যাকাউন্ট উদাহরণস্বরূপ কোন ব্যবহারকারী প্রোফাইল থাকতে পারে, যখন উপর একটি পরিসেবা হিসাবে আপনার প্রক্রিয়া রান SYSTEM, LOCALSYSTEMবা অন্যান্য বিল্ট-ইন অ্যাকাউন্ট, বা সঙ্গে Apppool পরিচয় আইআইএস অ্যাপ্লিকেশন দ্বারা বরকত হয় ব্যবহারকারী প্রোফাইল তৈরি বিকল্প অক্ষম। সুতরাং আপনি যখন %TEMP%সুস্পষ্টভাবে ভেরিয়েবলটি ওভাররাইট না করেন , c:\tempতখনও উইন্ডোজ c:\windows\tempসাধারণ-অ-ব্যবহারকারীর অ্যাকাউন্টগুলির জন্য, এমনকি ফোল্ডারগুলি ব্যবহার করতে বা এমনকি ফোল্ডারগুলি ব্যবহার করতে পারে । এবং আরও গুরুত্বপূর্ণ, প্রক্রিয়াটির এই ডিরেক্টরিতে অ্যাক্সেসের অধিকার নাও থাকতে পারে!

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