View Full Version : مشکل در مشخص کردن path در کار با کلاس File
pro_mvb
دوشنبه 11 دی 1391, 17:39 عصر
این برنامه ی من یه خورده اشکال داره اولش (اونم بخاطر گذاشتن // هست)
اول اینکه چیکار کنم مسیر دهیم از این حالت در بیاد و درست بشه ( آخه اول باید بزنی c: بعد عبارت .. رو بزنی تا به مسیر c: بره)
دوم اینکه من میخوام یه شرطی بذارم که مثلا وقتی عبارت jclear تایپ شد مسیری که در متغیر path در حین کار با برنامه ذخیره شده، پاک شود.
ممنون
امیدوارم کسی پاسخ بده:
package jjp;
import java.io.*;
import java.net.*;
import java.util.List;
import java.util.Scanner;
public class Jclient {
public static void main(String[] args){
String path="";
System.out.print("Enter path: ");
Scanner sc=new Scanner(System.in);
while(sc != null){
path = path+"//"+sc.next();
System.out.println(path);
File myFile=new File(path);
String names[] = myFile.list();
if(names != null){
for(int i=0;i<names.length;i++){
System.out.println(names[i]);
}
}
}
}
}
pro_mvb
سه شنبه 12 دی 1391, 12:21 عصر
من همچین کاری کردم ولی اصلا وارد شرط اول نمیشه که tempPath رو چک بکنه
package jjp;
import java.io.*;
import java.net.*;
import java.util.List;
import java.util.Scanner;
public class Jclient {
public static void main(String[] args){
String path="";
String tempPath="";
System.out.print("Enter path: ");
Scanner sc=new Scanner(System.in);
while(sc != null){
tempPath = "//"+sc.next();
if(tempPath=="//jclear"){
path="";
path="d:";
System.out.println("varede if shode ast");
} else{
path=path+tempPath;
tempPath="";
File myFile=new File(path);
String names[] = myFile.list();
if(names != null){
System.out.println("masire shoma ine: "+myFile.getPath());
for(int i=0;i<names.length;i++){
System.out.println(names[i]);
}
}else{
System.out.print("There is not a Directory or File");
}
}
}
}
}
Hybrid
سه شنبه 12 دی 1391, 15:16 عصر
سلام ، در جاوا رشته ها به صورت کلاس پیاده سازی شدند ، شما باید به جای == از equals. برای مقایسشون استفاده کنید .
pro_mvb
سه شنبه 12 دی 1391, 15:51 عصر
خیلی ممنون حقیقتش من خودم هم این نظر رو داشتم اما یکی از دوستانم گفت با == انجام بده (آبروم رفت با این کار:اشتباه: )
الان مشکلی که هست اینه که مثلا من وارد یه fodler میشم و از طریق .. میام یه folder عقب اینجا وقتی مگیم الان path چه مقداریه میگه مثلا :
c:\windows\user..
یعنی .. رو هم جزو مسیر در نظر میگیره چیکار کنم این مسئله حل بشه ؟؟؟؟؟؟ مهمه
spiderman200700
سه شنبه 12 دی 1391, 16:09 عصر
البته از JDK7 به بعد ، میشه از == هم برای مقایشه رشته ها استفاده کرد.
برای دسترسی به پوشه بالاتر میتونی از متد
getParentFile()
استفاده کنی
pro_mvb
سه شنبه 12 دی 1391, 16:31 عصر
آره میدونم اونو اما خوب من از کاربر دارم مسیر رو میگیرم و داخل Path میریزم حالا وقتی path شده windows\system32\felan من میخوام مثلا به اعزای زدن عبارت jback بیاد یه پله از مسیری که رفته (متغیر) عقب
اینو چطوری بش بفهمونم؟
pro_mvb
سه شنبه 12 دی 1391, 18:09 عصر
این با استفاده از getParentFile() هست که به نظرم باعث میشه کد کثیف بشه و درضمن فقط یک بار کار میده چون path تغییر نمیکنه در نتیجه مدام فقط پرنت لیست یک folder رو نشون میده.
به نظرم روش درستی نیست :
package jspy;
import java.io.*;
import java.net.*;
import java.util.List;
import java.util.Scanner;
public class Jclient {
public static void main(String[] args){
String path="";
String tempPath="";
String temp_parent="";
System.out.println("Enter path: ");
System.out.println("masire proje shoma injas: "+System.getProperty("user.dir"));
Scanner sc=new Scanner(System.in);
while(sc != null){
tempPath = "//"+sc.next();
if(tempPath.equals("//jclear")){
path="";
System.out.println("..................pak shod");
tempPath="";
} else{
if(tempPath.equals("//jback")){
temp_parent=tempPath;
tempPath="";
}
path=path+tempPath;
System.out.println("path bad az gerftan tempPath.....:"+path);
File myFile=new File(path);
if(temp_parent.equals("//jback")){
System.out.println("jback runing");
File file= myFile.getParentFile();
String parent_name[]=file.list();
if(parent_name!=null){
for(int i=0;i<parent_name.length;i++){
System.out.println("liste parents:"+parent_name[i]);
}
}
}else{
String names[] = myFile.list();
if(names != null){
System.out.println("masire shoma ine: "+myFile.getPath());
for(int i=0;i<names.length;i++){
System.out.println(names[i]);
}
}else{System.out.println("in masir mojod nis: "+myFile.getPath());
System.out.println("There is not a Directory or File");
System.out.println("namayeshe path dar akharin halat:"+path);
}
}
}
}
}
}
pro_mvb
چهارشنبه 13 دی 1391, 09:45 صبح
کیست مرا یاری کند ؟
:D
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.