Использование String toString: всякий раз, когда вам требуется исследовать конструктор с именем value в форме String, вы можете просто использовать String toString ... для примера ...
package pack1;
import java.util.*;
class Bank {
String n;
String add;
int an;
int bal;
int dep;
public Bank(String n, String add, int an, int bal) {
this.add = add;
this.bal = bal;
this.an = an;
this.n = n;
}
public String toString() {
return "Name of the customer.:" + this.n + ",, "
+ "Address of the customer.:" + this.add + ",, " + "A/c no..:"
+ this.an + ",, " + "Balance in A/c..:" + this.bal;
}
}
public class Demo2 {
public static void main(String[] args) {
List<Bank> l = new LinkedList<Bank>();
Bank b1 = new Bank("naseem1", "Darbhanga,bihar", 123, 1000);
Bank b2 = new Bank("naseem2", "patna,bihar", 124, 1500);
Bank b3 = new Bank("naseem3", "madhubani,bihar", 125, 1600);
Bank b4 = new Bank("naseem4", "samastipur,bihar", 126, 1700);
Bank b5 = new Bank("naseem5", "muzafferpur,bihar", 127, 1800);
l.add(b1);
l.add(b2);
l.add(b3);
l.add(b4);
l.add(b5);
Iterator<Bank> i = l.iterator();
while (i.hasNext()) {
System.out.println(i.next());
}
}
}
.. скопируйте эту программу в свое затмение и запустите ее ... вы получите идеи о String toString ...
редактирование спасибо за комментарии об этом являющемся Vista или Сервером 2008 только. Я пропустил это на странице. Угадайте, что я должен был читать целый статья ;)
, похоже, что можно использовать GetFileInformationByHandleEx () для получения этой информации.
Вы, вероятно, захотите сделать что-то как:
GetFileInformationByHandleEx( fileHandle, FILE_NAME_INFO, lpFileInformation, sizeof(FILE_NAME_INFO));
Двойная проверка страница MSDN для проверки я не ввел в заблуждение Вас слишком ужасно :)
С наилучшими пожеланиями,
Taylor
FWIW, вот то же решение из статьи MSDN, предложенной Prakash в Python с помощью замечательного ctypes:
from ctypes import *
# get handle to c:\boot.ini to test
handle = windll.kernel32.CreateFileA("c:\\boot.ini", 0x80000000, 3, 0, 3, 0x80, 0)
hfilemap = windll.kernel32.CreateFileMappingA(handle, 0, 2, 0, 1, 0)
pmem = windll.kernel32.MapViewOfFile(hfilemap, 4, 0, 0, 1)
name = create_string_buffer(1024)
windll.psapi.GetMappedFileNameA(windll.kernel32.GetCurrentProcess(), pmem, name, 1024)
print "The name for the handle 0x%08x is %s" % (handle, name.value)
# convert device name to drive letter
buf = create_string_buffer(512)
size = windll.kernel32.GetLogicalDriveStringsA(511, buf)
names = buf.raw[0:size-1].split("\0")
for drive in names:
windll.kernel32.QueryDosDeviceA(drive[0:2], buf, 512)
if name.value.startswith(buf.value):
print "%s%s" % (drive[0:2], name.value[len(buf.value):])
break
Если необходимо сделать это на Win32 предварительная Vista или Server 2008, посмотреть эти GetMappedFileName(...)
функция, которая является одним из содержащихся в полном порядке секретов в Win32. С немного C/C++-
fu, Вы можете память отображать небольшую часть рассматриваемого файла, и затем передавать тот дескриптор этой функции.
кроме того, на Win32, Вы не можете действительно удалить файл, который открыт (открываться/удалять связь проблема, упомянутая на другом ответе) - можно отметить его для удаления на завершении, но это будет все еще бродить вокруг, пока его последний открытый дескриптор не закрывается. Не знайте при отображении (через mmap(...)
), файл в этом случае помог бы, потому что он должен указать назад на физический файл...
- = - James.
На unixes нет никакого реального способа надежного выполнения этого. В Unix с традиционной файловой системой Unix можно открыть файл и затем удалить связь с ним (удалите его запись из каталога), и используйте его, в которой точке имя не хранится нигде. Кроме того, потому что файл может иметь несколько hardlinks в файловую систему, каждое из имен эквивалентны, поэтому после того как у Вас есть просто открытый дескриптор, это не было бы ясно, к какому имени файла необходимо отобразиться назад.
Так, Вы можете делать это на Win32 с помощью других ответов, но если когда-либо необходимо портировать приложение на среду Unix, Вам не повезет. Мой совет Вам состоит в том, чтобы осуществить рефакторинг Вашу программу, если это возможно, так, чтобы Вам не была нужна ОС, чтобы смочь поддержать открытый ресурс к соединению имени файла.